SLI、SLO 与错误预算

SLI 是可测量的服务质量指标,SLO 是其目标值,SLA 是对外承诺;错误预算等于 1 减 SLO,用量化余额平衡发布速度与稳定性。

三个概念

描述服务质量通常用三个词:SLI 是可测量的指标,SLO 是它的目标值,SLA 是对外承诺并附带违约后果。错误预算等于目标的反面,例如 99.9% 的 SLO 对应 0.1% 的允许失败额度。它把稳定性从口号变成了可消耗的余额,用来平衡发布速度与可用性。

怎么用

预算充足时可以加快发布节奏,承担可控的风险;预算耗尽时冻结高风险变更,把精力放在消除不稳定来源上。这套机制有效的前提是 SLI 按用户可感知口径定义,否则会出现指标全部达标而用户仍在投诉的割裂现象。

基本信息

SLI 示例可用性等于成功请求除以总请求;延迟用快请求占比
SLO 示例30 天滚动窗口可用性不低于 99.9%
错误预算0.1% 约合 30 天 43 分钟不可用额度
使用策略预算充足时加速迭代,耗尽时收紧变更并复盘

落地步骤

  • 定义 SLI:按用户可感知口径选成功率与延迟占比
  • 设定 SLO:按业务等级分层,滚动窗口统计
  • 换算预算:1 减去 SLO 得到窗口内允许的不可用量
  • 联动变更:预算充足放行迭代,耗尽冻结高风险发布
  • 回补改进:定位消耗来源,修复后恢复发布节奏
  • 明确排除:计划内维护与已豁免的依赖故障不计入预算

窗口换算参考

SLO30 天允许不可用
99.0%约 7.2 小时
99.9%约 43 分钟
99.95%约 21.6 分钟
99.99%约 4.3 分钟

和执行流程怎么结合

错误预算只有嵌入发布流程才有效:把预算剩余量作为发布审批的输入,预算紧张时自动提高审批层级或要求补充验证。同时要建立消耗归因机制,把预算消耗按故障、变更与依赖分类统计,否则团队只知道余额变少,不知道该修哪一块。这套机制需要有人定期复核,否则几个月后就会变成无人查看的看板。

错误预算必须明确排除项:计划内维护窗口、已豁免的第三方故障以及内部测试流量都不应计入,否则预算会被与服务质量无关的事件消耗,指标迅速失去公信力。

易错点

  • SLO 不按用户可感知口径设定,指标达成但用户依然不满
  • 所有服务统一高标准目标,不区分业务等级与投入成本
  • 把 SLA 与 SLO 混用,对外承诺与内部目标混为一谈
  • 预算耗尽后仍照常发布高风险变更,机制形同虚设

数据来源与参考

  • Google SRE Workbook:Implementing SLOs
  • Google SRE Book:Embracing Risk
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌