3. SLO 基础回顾:SLI、SLO、错误预算的定义与关系

在深入变更失败率参数配置之前,必须牢固掌握 SLO 体系的核心概念。本章将系统回顾服务等级指标(SLI)、服务等级目标(SLO)与错误预算(Error Budget)的定义、数学关系,并梳理常见的服务等级指标分类。

3.1 核心概念定义

术语 英文全称 定义 典型示例
SLI Service Level Indicator 服务质量的量化测量指标,通常为比率或百分比 请求成功率 = 成功请求数 / 总请求数
SLO Service Level Objective SLI 的目标阈值,代表服务承诺达到的质量水平 月度请求成功率 ≥ 99.9%
错误预算 Error Budget SLO 允许的最大不可用时间或失败次数 月度允许失败请求数 = 总请求数 × (1 - 99.9%)
关键公式: 错误预算 = 1 - SLO(以百分比表示)。例如 SLO = 99.9%,则错误预算 = 0.1%。错误预算消耗速度 = 实际失败率 - 目标失败率。

3.2 三者的关系模型

SLI、SLO 与错误预算构成一个闭环反馈系统:SLI 是原始测量值,SLO 是目标边界,错误预算则是衡量当前服务健康度的“缓冲区”。当错误预算耗尽时,团队应停止发布变更并优先恢复稳定性。

SLI · SLO · 错误预算 关系闭环 SLI 服务等级指标 实际测量值 SLO 服务等级目标 目标阈值 错误预算 Error Budget 允许失败额度 对比 计算 错误预算耗尽 → 冻结变更 → 改进 SLI 闭环反馈机制 1. SLI 持续测量服务质量(如请求成功率、延迟) 2. SLO 设定目标边界(如 99.9% 成功率) 3. 错误预算 = (1 - SLO) × 总测量量,消耗速度反映服务健康度 4. 错误预算耗尽 → 触发稳定性响应 → 优化 SLI → 恢复预算

3.3 服务等级指标(SLI)的分类

SLI 是 SLO 体系的基础测量单元。根据 Google SRE 白皮书及行业实践,SLI 通常分为以下五大类:

分类 测量维度 典型指标 适用场景
可用性 服务是否正常运行 请求成功率、正常运行时间 API 网关、数据库、核心业务
延迟 响应速度 P50/P95/P99 延迟 Web 服务、搜索、实时系统
吞吐量 处理能力 QPS、RPS、并发连接数 消息队列、流处理、CDN
正确性 数据与逻辑准确性 数据一致性比率、错误率 支付系统、数据管道、计费
饱和度 资源使用程度 CPU 使用率、内存占用、磁盘 IO 基础设施、容器集群、存储
实践建议: 对于变更失败率场景,最相关的 SLI 是 可用性 和 正确性。变更失败率本身可视为可用性 SLI 的一个子维度,衡量变更操作对服务可用性的负面影响。

3.4 SLI 到 SLO 的映射规则

并非所有 SLI 都需要设置 SLO。选择 SLO 时应遵循以下原则:

  • 用户相关: SLO 必须反映最终用户体验,而非内部技术指标。
  • 可测量: SLI 必须能够被持续、准确地采集和计算。
  • 可行动: 当 SLO 被违反时,团队应有明确的响应流程。
  • 有限数量: 每个服务建议设置 3~5 个核心 SLO,避免指标泛滥。
SLI → SLO 映射流程 步骤 1 定义 SLI 步骤 2 设定目标阈值 步骤 3 计算错误预算 步骤 4 持续监控 映射示例:变更失败率 SLI:变更失败率 = 失败变更数 / 总变更数 SLO:月度变更失败率 ≤ 5% 错误预算:月度允许失败变更数 = 总变更数 × 5%

3.5 错误预算的消耗与恢复

错误预算并非静态资源,其消耗与恢复遵循以下规律:

  • 消耗: 每次 SLI 低于 SLO 阈值时,错误预算按比例减少。例如 SLO = 99.9%,某分钟实际成功率 = 99.5%,则该分钟消耗 0.4% 的预算。
  • 恢复: 当 SLI 高于 SLO 阈值时,错误预算缓慢恢复。恢复速度取决于超出部分的幅度和持续时间。
  • 窗口: 错误预算通常按滚动窗口计算(如 30 天滚动),避免一次性耗尽导致长期冻结。
常见误区: 错误预算不是“可浪费的资源”。即使预算充足,频繁的高失败率变更仍会损害用户信任。错误预算应作为风险控制的边界,而非变更速度的借口。

3.6 本章小结