3. 误差预算概念

误差预算(Error Budget)是 SRE 实践中最具操作性的量化工具。它将服务所有者从“100% 可用性”的不可实现目标中解放出来,转而通过一个明确的、可消耗的“不可用额度”来平衡可靠性与创新速度之间的矛盾。

3.1 误差预算的定义

误差预算是指服务在 SLO 允许范围内可以发生的最大不可用时间或错误量。简单来说,如果服务承诺 99.9% 的可用性,那么剩余的 0.1% 就是该服务在 SLO 周期内可以“犯错”的预算。

核心思想: 误差预算不是“失败指标”,而是“创新燃料”。只要预算未耗尽,团队可以自由发布新功能、进行架构变更;一旦预算接近耗尽,必须暂停发布,优先投入可靠性工作。
概念 定义 示例(月度 99.9% SLO)
SLO 服务承诺的可靠性目标 99.9%
SLI 实际测量的可靠性指标 99.85%
误差预算 SLO 允许的最大不可用额度 100% - 99.9% = 0.1%
已消耗预算 实际发生的不可用比例 100% - 99.85% = 0.15%
剩余预算 误差预算 - 已消耗预算 0.1% - 0.15% = -0.05%(已超支)

3.2 误差预算的计算公式

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

误差预算总量 = 1 - SLO(以小数表示)
已消耗预算 = 1 - SLI(以小数表示)
剩余预算 = 误差预算总量 - 已消耗预算

在实际运营中,通常将误差预算转换为时间单位或请求计数,以便团队直观理解:

SLO 月度误差预算(30天) 季度误差预算(90天) 年度误差预算(365天)
99.9% 43.2 分钟 2.16 小时 8.76 小时
99.95% 21.6 分钟 1.08 小时 4.38 小时
99.99% 4.32 分钟 12.96 分钟 52.56 分钟
实践建议: 在台账中同时记录“百分比预算”和“时间预算”两个维度。百分比用于趋势分析,时间用于团队沟通(例如:“我们本月还剩 20 分钟的故障额度”)。

3.3 误差预算的用途

误差预算在 SRE 运营中承担三大核心用途,构成可靠性决策的闭环:

  1. 发布决策门禁: 当剩余预算充足时,允许正常发布;当预算耗尽时,自动冻结发布,直到预算恢复。
  2. 可靠性投资优先级: 预算消耗速度反映服务脆弱性,消耗越快,越应优先投入架构加固、容量规划等工作。
  3. 故障复盘与改进: 每次故障消耗的预算量直接量化了故障影响,帮助团队判断是否需要升级响应机制。
误差预算生命周期与决策流程 误差预算生命周期与决策流程 ① 定义 SLO ② 计算误差预算 ③ 监控 SLI 消耗 ④ 预算是否充足? 充足 ✅ 允许发布 耗尽 🚫 冻结发布 说明:误差预算将可靠性目标转化为可操作的发布门禁,实现“创新速度”与“服务稳定”的量化平衡。

3.4 误差预算台账上下文补充

在《服务画像构建》课程中,误差预算不是孤立指标,而是台账上下文的核心纽带。以下表格展示了误差预算如何与其他台账字段联动:

台账字段 与误差预算的关系 运营动作
SLO 目标 决定预算总量 根据业务容忍度调整 SLO
SLI 实测值 计算已消耗预算 实时监控,触发告警
剩余预算 当前可用额度 发布决策、故障定级
预算消耗速率 反映服务脆弱性 触发架构加固优先级
预算恢复时间 从耗尽到恢复的时长 评估改进措施有效性
常见误区: 不要将误差预算视为“可以浪费的额度”。预算的合理使用方式是:在预算充足时主动进行风险可控的变更,而不是被动等待故障消耗预算。预算耗尽后的“冻结期”是团队最痛苦的时期,应尽力避免。
误差预算在台账中的上下文联动 误差预算在台账中的上下文联动 误差预算 Error Budget SLO 目标定义 SLI 实时监控 发布决策门禁 故障影响定级 台账上下文记录 误差预算作为台账核心,向上承接 SLO/SLI,向下驱动发布与故障响应,形成可靠性运营闭环。

3.5 误差预算的消耗与恢复机制

误差预算并非静态指标,它在运营周期内动态变化。理解其消耗与恢复机制,是有效管理预算的前提:

  • 消耗方式: 每次 SLI 未达到 SLO 的事件(如延迟超标、错误率上升、可用性下降)都会消耗预算。消耗量 = 事件持续时间 × 未达标幅度。
  • 恢复方式: 预算按时间窗口滚动恢复。例如,月度预算在每月初重置;滑动窗口预算则随窗口推移逐步恢复。
  • 超支后果: 预算耗尽后,服务进入“可靠性冻结期”,所有非关键变更暂停,团队全力投入稳定性修复。
关键公式: 误差预算消耗速率 = (1 - SLI) / (1 - SLO) × 100%。当该值持续 > 100% 时,表示预算正在加速耗尽,需立即干预。