2. SLO 基础概念:服务水平目标 (SLO) 的定义、SLI 与 SLA 的区别、SLO 的常见类型

在可观测性与可靠性工程体系中,SLO(Service Level Objective,服务水平目标)是连接用户真实体验与运维动作的核心度量。没有 SLO,告警就失去了“是否值得被叫醒”的判断依据;没有 SLO,MTTR 复盘就缺少了“是否达到预期”的标尺。本章将系统拆解 SLO 的定义、与 SLI/SLA 的边界,以及最常见的三种 SLO 类型。

2.1 服务水平目标 (SLO) 的定义

SLO 是服务提供方为自己设定的、在一段评估窗口内必须达成的目标值或目标范围。它通常由一个或多个 SLI(Service Level Indicator,服务水平指标) 经过聚合计算后得出。SLO 不是合同承诺,而是内部工程团队用来判断服务“健康”还是“不健康”的阈值。

核心公式:
SLO = 目标值(如 99.9%) × 评估窗口(如 30 天滑动窗口)
当实际 SLI 持续低于 SLO 阈值时,触发“SLO 违约”告警,进入 MTTR 复盘流程。

SLO 的关键属性:

  • 可量化:必须基于可采集的 SLI 计算,不能是模糊描述。
  • 有窗口:必须指定评估周期(滑动窗口、日历月、滚动周)。
  • 有预算:每个 SLO 对应一个“错误预算”(1 - SLO),允许一定量的故障时间。
  • 面向用户:SLO 应反映用户可感知的服务质量,而非基础设施内部指标。

2.2 SLI 与 SLA 的区别

SLI、SLO、SLA 是可靠性工程中三个层级的概念,经常被混淆。下表从定义、受众、严格程度三个维度进行对比:

维度 SLI(服务水平指标) SLO(服务水平目标) SLA(服务水平协议)
定义 服务质量的原始度量指标 基于 SLI 设定的目标阈值 对外承诺的合同条款
典型示例 请求延迟 P99 = 200ms P99 延迟 ≤ 200ms 的比例 ≥ 99.9% 若月度可用性低于 99.95%,赔付 10% 月费
受众 SRE / 研发团队 SRE / 研发 / 产品团队 客户 / 法务 / 商务
严格程度 无严格性,仅采集数据 内部严格,违约触发告警与复盘 法律约束,违约触发赔偿
是否可调整 随服务演进可增删 可基于错误预算调整 需合同变更流程
实践建议:SLO 应比 SLA 更严格(例如 SLA 承诺 99.9%,SLO 设为 99.95%),为合同违约预留缓冲空间。SRE 团队只对 SLO 负责,SLA 由法务和商务团队管理。

2.3 SLO 的常见类型

在分布式追踪与微服务架构中,最常用的 SLO 类型集中在三个维度:可用性、延迟、错误率。这三种类型覆盖了用户对服务“能用、够快、正确”的核心诉求。

2.3.1 可用性 (Availability) SLO

定义服务在评估窗口内正常响应请求的时间比例。通常基于健康检查、请求成功率或 uptime 计算。

  • 典型指标:请求成功数 / 总请求数 × 100%
  • 常见目标:99.9%(“三个九”)、99.99%(“四个九”)
  • 适用场景:核心 API、数据库、网关、DNS 解析

2.3.2 延迟 (Latency) SLO

定义服务在指定百分位(如 P50、P99)上的响应时间必须低于某个阈值。延迟 SLO 通常比可用性 SLO 更难达成,因为它对毛刺更敏感。

  • 典型指标:P99 延迟 ≤ 500ms,P50 延迟 ≤ 100ms
  • 常见目标:P99 延迟 ≤ 200ms 的比例 ≥ 99.5%
  • 适用场景:用户交互接口、实时查询、流式处理

2.3.3 错误率 (Error Rate) SLO

定义服务返回错误(HTTP 5xx、业务异常、超时)的请求比例上限。错误率 SLO 是分布式追踪中最直接的“质量门禁”指标。

  • 典型指标:错误请求数 / 总请求数 × 100%
  • 常见目标:错误率 ≤ 0.1%
  • 适用场景:支付链路、订单服务、数据写入
常见误区:不要只设置可用性 SLO 而忽略延迟 SLO。一个服务可能 100% 可用(返回 HTTP 200),但每个请求耗时 10 秒,用户体验极差。延迟和错误率 SLO 才是用户真实体验的“照妖镜”。

2.4 三种 SLO 类型的关系图

下图展示了可用性、延迟、错误率三种 SLO 在分布式追踪中的覆盖范围与重叠关系:

三种 SLO 类型在分布式追踪中的覆盖范围 可用性 SLO 请求成功率 Uptime 检测 健康检查通过率 典型目标:99.9% 延迟 SLO P50 / P95 / P99 响应时间分布 尾延迟监控 典型目标:P99 ≤ 200ms 错误率 SLO HTTP 5xx 比例 业务异常率 超时 / 熔断计数 典型目标:≤ 0.1% 三者重叠区域 = 用户真实体验 分布式追踪的 span 标签同时携带延迟、状态码、错误信息,可同时计算三类 SLO

2.5 SLO 在质量门禁中的角色

在“质量门禁集成分布式追踪”的课程背景下,SLO 是门禁的判定标准。每次代码部署或配置变更后,门禁系统会对比实时 SLI 与 SLO 阈值:

  1. 采集:从分布式追踪系统(如 Jaeger、Zipkin)拉取最近 5 分钟的 span 数据。
  2. 计算:聚合出可用性、P99 延迟、错误率三个 SLI 值。
  3. 判定:若任一 SLI 低于 SLO 阈值,则门禁失败,阻断发布并触发告警。
  4. 复盘:MTTR 复盘时,以 SLO 违约时间线为锚点,回溯分布式追踪中的故障根因 span。
关键结论:没有 SLO 的门禁是“盲人摸象”;没有分布式追踪的 SLO 违约复盘是“黑盒猜谜”。SLO 为门禁提供数学依据,分布式追踪为 SLO 违约提供根因路径。