1. SLO 与 Error Budget 基础概念
在站点可靠性工程(SRE)体系中,SLO、SLI 与 Error Budget 是定义服务健康度与驱动自动化决策的三大基石。三者构成一条从测量到容忍再到行动的闭环链路,是后续自愈阈值设定的理论前提。
1.1 核心定义
| 术语 | 英文全称 | 定义 | 典型示例 |
|---|---|---|---|
| SLI | Service Level Indicator | 服务等级指标,是对服务行为某个维度的量化测量,通常表示为比率、计数或延迟分布。 | 请求成功率 99.95%;P99 延迟 ≤ 200ms |
| SLO | Service Level Objective | 服务等级目标,是 SLI 的目标阈值,代表用户可接受的服务质量下限。 | 月度请求成功率 ≥ 99.9% |
| Error Budget | Error Budget | 错误预算,是 SLO 允许的最大不可用额度,计算公式为:1 − SLO。 |
SLO 99.9% → Error Budget = 0.1% 的月度总请求 |
关键等式: Error Budget = 1 − SLO。SLO 越严格,Error Budget 越少,系统可承受的故障窗口越小。
1.2 三者关系:测量 → 目标 → 容忍
SLI、SLO 与 Error Budget 构成一个递进式控制链:
- SLI 是原始数据:从监控系统采集请求成功率、延迟、吞吐量等原始指标。
- SLO 是目标边界:将 SLI 与业务期望对齐,定义“好”与“坏”的分界线。
- Error Budget 是剩余容错空间:SLO 之外的容忍额度,用于指导发布节奏、故障响应与自愈触发。
当 Error Budget 消耗殆尽时,系统应自动进入保守模式:降低变更频率、收紧自愈阈值、甚至主动降级非核心功能。
1.3 典型 SLI 维度与 SLO 映射
不同业务场景关注的 SLI 维度不同,SLO 的设定也应随之调整。下表列出常见维度及其典型 SLO 范围:
| SLI 维度 | 测量方式 | 典型 SLO 范围 | 适用场景 |
|---|---|---|---|
| 可用性 | 成功请求 / 总请求 | 99.9% ~ 99.999% | 核心 API、支付、登录 |
| 延迟(P50) | 第 50 百分位响应时间 | ≤ 100ms | 用户交互、前端渲染 |
| 延迟(P99) | 第 99 百分位响应时间 | ≤ 500ms | 后台服务、数据查询 |
| 吞吐量 | 每秒请求数(RPS) | ≥ 峰值 × 0.9 | 流媒体、消息队列 |
| 错误率 | 5xx 响应 / 总响应 | ≤ 0.1% | 所有生产服务 |
实践建议: 不要为所有维度设定 SLO。选择 2~3 个与用户体验最相关的 SLI 作为核心 SLO,其余作为辅助观测指标。过多的 SLO 会稀释 Error Budget 的管理焦点。
1.4 Error Budget 的消耗与自愈关联
Error Budget 不仅是统计数字,更是自愈系统的触发燃料。当消耗速率超过预设阈值时,系统应自动调整行为:
- 绿色区(消耗 < 60%):正常运营,允许变更与发布。
- 黄色区(60% ~ 80%):限制高风险变更,启动预自愈检查。
- 红色区(> 80%):冻结变更,触发自动回滚或扩容,收紧自愈阈值。
注意: Error Budget 的消耗分区阈值(60%、80%)并非固定值,应根据服务重要性与历史故障模式动态调整。本课程后续章节将详细讲解如何通过消耗模型自动校准这些阈值。
1.5 小结
理解 SLI、SLO 与 Error Budget 的关系是构建自愈系统的第一步:
- SLI 回答“我们测量什么”。
- SLO 回答“我们承诺什么”。
- Error Budget 回答“我们还能容忍多少故障”。