1.1 Error Budget 基础概念

Error Budget(错误预算)是站点可靠性工程(SRE)中连接系统可靠性与业务迭代速度的核心量化工具。它不是一个纯技术指标,而是一份可消耗的“可靠性额度”,允许团队在保障用户满意度的前提下,有计划地引入变更与风险。

1.1.1 什么是 Error Budget

Error Budget 的数学本质是:在 SLO 允许的不可用时间或错误比例内,剩余的可容忍错误量。只要实际错误量未超出 Error Budget,团队就可以正常发布新功能;一旦 Error Budget 耗尽,则必须暂停变更,优先投入稳定性修复。

核心公式:
Error Budget = 1 − SLO
例如:SLO = 99.9%,则 Error Budget = 0.1%(月度约 43 分 12 秒的不可用时间)
SLO 目标 Error Budget(月度) 典型场景
99.9%(三个九) ≈ 43 分 12 秒 内部工具、开发环境
99.95% ≈ 21 分 36 秒 标准线上服务
99.99%(四个九) ≈ 4 分 19 秒 核心交易、实时系统
99.999%(五个九) ≈ 25.9 秒 金融核心、电信级系统

1.1.2 SLO 与 SLI 的关系

理解 Error Budget 必须先理清三个核心概念的关系:

  • SLI(Service Level Indicator):服务等级指标,是可量化的原始测量值,如请求延迟 P99、错误率、吞吐量。
  • SLO(Service Level Objective):服务等级目标,是对 SLI 设定的目标阈值,如“99.9% 的请求延迟 < 200ms”。
  • Error Budget:基于 SLO 计算出的可容忍偏差额度,是 SLO 与 100% 之间的差值。
SLI → SLO → Error Budget 关系图 SLI 服务等级指标 SLO 服务等级目标 Error Budget 错误预算 定义阈值 计算差值 示例说明: • SLI:过去 30 天请求错误率 = 0.05% • SLO:错误率 ≤ 0.1%(即 99.9% 成功率) • Error Budget:0.1% − 0.05% = 0.05%(剩余额度) • 结论:预算充足,可继续发布;若错误率升至 0.12%,则预算耗尽。

1.1.3 Error Budget 的数学定义

在 SRE 实践中,Error Budget 通常基于滑动窗口计算,常见窗口为 30 天。数学定义如下:

# 基于时间的 Error Budget(适用于可用性 SLO)
ErrorBudget_total = 总时间窗口 × (1 − SLO)
ErrorBudget_remaining = ErrorBudget_total − 累计不可用时间

# 基于计数的 Error Budget(适用于请求成功率 SLO)
ErrorBudget_total = 总请求数 × (1 − SLO)
ErrorBudget_remaining = ErrorBudget_total − 累计错误请求数

# 消耗率(Burn Rate)
BurnRate = 实际错误量 / ErrorBudget_total
# BurnRate > 1 表示预算正在加速消耗
⚠️ 常见误区:Error Budget 不是“允许失败 N 次”的静态额度,而是基于滑动窗口的滚动预算。过去 30 天的错误会持续影响当前预算余额,直到滑出窗口。

1.1.4 Error Budget 的业务价值

Error Budget 将技术指标转化为业务决策依据,在以下四个维度产生直接价值:

价值维度 具体表现 典型场景
决策量化 用数据代替直觉判断“能否发布” 发布门禁:预算耗尽自动阻断上线
风险对账 明确变更风险与可靠性之间的权衡 大促前预留预算,暂停非关键变更
团队对齐 开发与运维使用同一套语言沟通 SLO 评审会:双方共同确认预算阈值
持续改进 预算消耗趋势暴露系统薄弱环节 月度复盘:分析高消耗时段根因
Error Budget 业务价值闭环 Error Budget 核心量化纽带 决策量化 数据驱动发布 风险对账 变更 vs 可靠性 团队对齐 统一沟通语言 持续改进 暴露薄弱环节