1. Error Budget 基础概念

1.1 什么是 Error Budget

Error Budget(错误预算)是 SRE 实践中用于平衡系统可靠性与功能迭代速度的核心量化工具。它定义了一个服务在给定 SLO(Service Level Objective)下允许发生故障或性能降级的时间总量。只要实际不可用时间未超出 Error Budget,团队就可以正常发布新功能;一旦预算耗尽,则必须暂停变更,优先投入稳定性修复。

核心思想: 将可靠性从“目标”转化为“可消耗的预算”,让业务创新与稳定性之间形成可度量的权衡机制。

1.2 SLO 与 SLI 的关系

理解 Error Budget 必须先理清 SLI 和 SLO 的定义与关系:

术语 全称 定义 示例
SLI Service Level Indicator 服务质量的直接可测量指标 请求延迟 P99 ≤ 200ms、可用率 ≥ 99.9%
SLO Service Level Objective SLI 的目标阈值,是团队承诺的可靠性边界 月度可用率 ≥ 99.95%
SLA Service Level Agreement 对客户或业务方的正式承诺,通常附带惩罚条款 可用率 ≥ 99.9%,否则赔付 10% 月费

三者关系可概括为:SLI 是原始数据 → SLO 是目标阈值 → SLA 是商业承诺。Error Budget 正是基于 SLO 与 SLI 之间的差值计算得出。

SLI → SLO → Error Budget 关系图 SLI 服务等级指标 定义 SLO 服务等级目标 计算 Error Budget 错误预算 关键关系说明: 1. SLI 是实际观测值,SLO 是目标阈值 2. Error Budget = (1 - SLO) × 总时间窗口 - 实际不可用时间 3. 当 Error Budget 耗尽时,应暂停所有非关键变更

1.3 Error Budget 的计算公式

Error Budget 的计算基于 SLO 与 SLI 的差值,核心公式如下:

Error Budget = (1 - SLO) × 总时间窗口 - 实际不可用时间

其中:
- SLO:服务等级目标(如 99.9%)
- 总时间窗口:评估周期总时长(如 30 天 = 43200 分钟)
- 实际不可用时间:SLI 未达标的总时长
计算示例: 假设某服务月度 SLO 为 99.95%,总时间窗口为 30 天(43200 分钟)。
• 允许最大不可用时间 = (1 - 0.9995) × 43200 = 21.6 分钟
• 若本月已发生 15 分钟故障,则剩余 Error Budget = 21.6 - 15 = 6.6 分钟

1.4 常见 SLO 对应的 Error Budget 速查表

SLO 月度允许不可用时间 季度允许不可用时间 年度允许不可用时间
99.9%(三个九) 43.2 分钟 2.16 小时 8.76 小时
99.95%(三个半九) 21.6 分钟 1.08 小时 4.38 小时
99.99%(四个九) 4.32 分钟 12.96 分钟 52.56 分钟
99.999%(五个九) 25.9 秒 1.3 分钟 5.26 分钟

1.5 Error Budget 的消耗与恢复机制

Error Budget 并非静态值,而是随时间动态变化的“预算池”:

  • 消耗: 每次 SLI 未达标事件(如延迟超阈值、错误率升高、服务不可用)都会消耗 Error Budget。
  • 恢复: 当服务恢复正常运行且 SLI 持续达标时,Error Budget 会随着时间窗口滚动而逐步恢复(基于滑动窗口计算)。
  • 耗尽后果: 一旦 Error Budget 归零,应触发“冻结变更”机制,停止所有非关键发布,直至预算恢复到安全水位。
常见误区: Error Budget 不是“故障配额”,而是“风险预算”。即使预算充足,也不应故意消耗;预算耗尽时,必须严格执行变更冻结,否则将直接违反 SLO 并可能触发 SLA 惩罚。

1.6 多维度 Error Budget 示例

实际生产环境中,一个服务可能同时维护多个 SLI/SLO 维度,每个维度独立计算 Error Budget:

SLI 维度 SLO 目标 月度预算 当前消耗 剩余预算
可用性(Availability) 99.95% 21.6 分钟 8 分钟 13.6 分钟 ✅
延迟 P99(Latency) ≤ 200ms 21.6 分钟 18 分钟 3.6 分钟 ⚠️
错误率(Error Rate) ≤ 0.1% 21.6 分钟 22 分钟 -0.4 分钟 ❌

上例中,错误率维度已耗尽预算,应优先修复错误率问题,暂停该维度的变更发布。

Error Budget 消耗与恢复周期示意 Day 1 Day 15 Day 30 耗尽 恢复 蓝色曲线表示 Error Budget 剩余量;当曲线触及底部(耗尽)时触发变更冻结,服务恢复后预算逐步回升。

1.7 本章小结

  • Error Budget 是 SLO 与实际 SLI 之间的差值,代表服务可承受的故障时间。
  • SLI → SLO → Error Budget 构成可靠性量化管理的基础链路。
  • 计算公式:Error Budget = (1 - SLO) × 总时间窗口 - 实际不可用时间。
  • 不同 SLO 等级对应不同的预算窗口,团队应根据业务重要性合理设定。
  • Error Budget 耗尽时应触发变更冻结,这是 SRE 实践中最重要的纪律之一。