SLO 和 SLA 有什么区别?
更新时间:2026-09-19。短答页。这两个词常被混用,但一个对内、一个对外,违反的后果完全不同。
一句话回答
SLO 是团队内部给自己定的服务质量目标(用来驱动工程决策),SLA 是和客户签的合同(达不到要赔偿/减免);SLI 则是实际测出来的指标。 工程上要求 SLO 严于 SLA,中间的差值留作缓冲。
三者关系
| 概念 | 面向 | 性质 | 例子 | 违反后果 |
|---|---|---|---|---|
| SLI | 内部 | 实测指标 | 成功率 = 99.96% | —— |
| SLO | 内部 | 自定目标 | 30 天成功率 ≥ 99.9% | 触发内部改进/冻结发布 |
| SLA | 外部客户 | 合同条款 | 月可用性 < 99.5% 赔 10% | 赔钱、损害信誉 |
bash
实际 SLI 99.96% ≥ SLO 99.9% > SLA 99.5%
内部红线 对外赔付线为什么 SLO 必须比 SLA 严
如果内部目标也定 99.5%(和合同一样),那每次轻微抖动都在赔偿边缘。把 SLO 设为 99.9%、SLA 设为 99.5%,中间的 0.4% 是安全垫:系统先跌破内部目标,团队就介入,往往还没到违约线就修好了。这个「允许失败的额度」就是错误预算(1 − SLO),它决定了还能不能大胆发版,见错误预算。
一个直观例子
- 云存储 SLA 写「月可用性 99.9%,低于则按月费 10% 赔偿」——这是法务和商务承诺。
- 工程团队内部 SLO 定 99.95%,并据此配多窗口燃烧率告警、容量冗余——这是给自己更严的要求,争取永远不触发赔偿。
坑
- 把 SLA 当内部目标,贴着合同线运行,没有缓冲,迟早赔钱。
- 只定 SLO 没有可测量的 SLI,目标无法验证,等于口号(怎么定义见 SLI/SLO 落地)。
- 对所有服务都承诺同一档 SLA,非核心功能也背上高成本。
总结
SLI 是实测质量、SLO 是团队内部更严的工程目标(跌破则停发版、做改进)、SLA 是对客户带赔偿条款的外部合同;正确做法是让实际 SLI 持续满足严于 SLA 的 SLO,用两者之间的差值作为错误预算和安全垫,从而在真正违约前就介入修复。