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 是目标边界,错误预算则是衡量当前服务健康度的“缓冲区”。当错误预算耗尽时,团队应停止发布变更并优先恢复稳定性。
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,避免指标泛滥。
3.5 错误预算的消耗与恢复
错误预算并非静态资源,其消耗与恢复遵循以下规律:
- 消耗: 每次 SLI 低于 SLO 阈值时,错误预算按比例减少。例如 SLO = 99.9%,某分钟实际成功率 = 99.5%,则该分钟消耗 0.4% 的预算。
- 恢复: 当 SLI 高于 SLO 阈值时,错误预算缓慢恢复。恢复速度取决于超出部分的幅度和持续时间。
- 窗口: 错误预算通常按滚动窗口计算(如 30 天滚动),避免一次性耗尽导致长期冻结。
常见误区: 错误预算不是“可浪费的资源”。即使预算充足,频繁的高失败率变更仍会损害用户信任。错误预算应作为风险控制的边界,而非变更速度的借口。