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 秒的不可用时间)
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% 之间的差值。
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 评审会:双方共同确认预算阈值 |
| 持续改进 | 预算消耗趋势暴露系统薄弱环节 | 月度复盘:分析高消耗时段根因 |