跳到主要内容
约 5 分钟3 张卡

服务等级目标(SLO)

SLO 为用户可感知的服务表现设定目标。本文讲解 SLI、错误预算、告警和容量余量。

1. 面试核心​

先记住这几条,再读正文
  • SLI 口径。 请求型 SLI 等于好事件数除以有效事件数。
  • SLO 定义。 SLO 同时包含指标目标与统计窗口。卡 · 综合题
  • 错误预算。 错误预算比例为 1-SLO,允许失败数还取决于有效事件数。
  • 预算消耗速率。 燃烧率等于错误率除以预算比例,多窗口用于确认持续故障。卡 · 多窗口计算
  • 故障容量。 故障余量按剩余资源的安全吞吐计算。卡 · 可用区故障余量

2. 服务与用户旅程​

登录、支付和后台导出有不同的时效要求。指标需明确用户、入口、完成条件和统计范围。

下单可用性可从合法请求进入网关开始计算。成功下单或正确拒绝都可作为好事件。依赖超时造成未知结果,则计为失败。具体定义需与产品语义一致。

3. SLI​

请求型 SLI 采用比例:

SLI = good events / valid events

可用性统计正确完成的请求。延迟指标统计阈值内完成的请求。两者可分别定义,也可组合成一个好事件条件。

定义还需说明采集位置、排除条件和缺失数据处理。地区或租户分组用于发现局部故障。靠近用户的测量能覆盖网关等链路。

4. SLO​

目标示例为:过去 28 天,99.9% 的有效下单请求正确完成。另一个目标为:99% 的商品查询在 300 ms 内完成。

滚动窗口持续反映近期表现。日历窗口便于按月评估。报表、告警和发布策略应采用一致口径。

目标由用户需求、失败损失与实现成本决定。内部目标可严于外部协议,以保留响应时间。

5. 错误预算​

99.9% 的请求型 SLO 对应 0.1% 的预算比例。若窗口内有一亿次有效请求,允许十万次失败。剩余预算还需扣除已经发生的失败。

请求预算与停机时长的口径不同。高峰期短暂故障可消耗大量请求预算。换算停机分钟数时,应单独说明时间型指标。

发布策略可按预算状态执行。预算充足时正常发布,快速消耗时缩小灰度。预算耗尽后优先恢复可靠性。安全修复与止损变更可保留通道。

6. 燃烧率告警​

燃烧率比较当前错误率和允许错误比例:

burn rate = observed error ratio / (1 - SLO)

SLO 为 99.9%,当前错误率为 1%,燃烧率就是 10。它描述消耗速度,剩余预算决定还能支撑多久。

6.1 多窗口计算​

以 30 天窗口和近似恒定流量为例。燃烧率 14.4 持续一小时,消耗整窗预算的 2%:

14.4 × 1 / (30 × 24) = 2%

可同时要求过去 1 小时和 5 分钟超过 14.4。长窗口确认累计影响,短窗口确认故障仍在持续。故障结束后,短窗口更快恢复正常。

流量变化时,应直接计算失败事件与整窗预算。低流量接口需结合合成探针和实际失败数量。单个失败就会显著改变低流量比例。

7. 容量余量​

单位资源安全吞吐由满足 SLO 的压测结果给出。预测峰值除以安全吞吐,得到基础资源需求。还需计入扩容预热、发布并存和依赖退化。

7.1 可用区故障余量​

假设三个可用区均衡承载 6000 QPS。单实例安全吞吐为 500 QPS。要求任一区失效后仍能承接全部流量。

剩余两区共需 12 个实例,所以每区至少 6 个。正常状态共 18 个实例,总安全容量为 9000 QPS。负载占安全容量约 66.7%。

这只是给定假设下的最低配置。实际流量倾斜与数据库瓶颈还需压测。自动扩容的预热时间也需额外余量。

8. 依赖的可用性预算​

同步必选依赖会影响整条用户路径。若两个依赖相互独立,且都必须成功,可用性可相乘估算。相关故障会破坏独立假设。

缓存、异步化或降级可减少必选依赖。它们也会改变结果语义。返回 200 但用户无法完成任务时,仍应按定义计为坏事件。

9. 常见问题​

9.1 SLA 与 SLO​

SLO 是工程管理目标。SLA 是对外协议,并约定未达标的后果。内部 SLO 可严于 SLA。

9.2 目标的划分粒度​

10 · 面试题卡片​

本页题目与参考回答

10.1 怎样为一个核心服务制定 SLO 和容量余量​

出现公司:阿里巴巴

题型:综合题

考察重点

  • 用户旅程、SLI 分子分母和统计窗口。
  • 错误预算、燃烧率与发布策略。
  • 峰值、故障域、扩容时间和压测基线。

相关内容:服务与用户旅程至依赖的可用性预算。

参考回答

核心服务的 SLO 应由用户旅程、好事件和统计窗口定义。

例如,28 天内 99.9% 的合法下单请求正确完成。错误预算据此计算,并绑定告警与发布策略。

容量用满足 SLO 的安全吞吐计算。峰值、预热和可用区失效共同决定余量。剩余实例与关键依赖都要具备接管能力。上线后用真实流量和演练结果修正估计。

10.2 99.9% 的 SLO 下,14.4 倍燃烧率持续一小时意味着什么?​

出现公司:暂无已核验的公开来源(本站自测)

考察重点:预算比例、统计窗口与多窗口告警。

相关内容:多窗口计算。

参考回答

按 30 天窗口、流量近似恒定计算,14.4 倍燃烧率持续一小时会消耗整窗预算的 2%。

99.9% SLO 的允许错误比例为 0.1%,14.4 倍对应实际错误率 1.44%。一小时占 30 天的 1/720,所以预算消耗为 14.4 / 720 = 2%。告警再结合短窗口,可确认故障仍在持续。

10.3 三可用区承接 6000 QPS,如何计算单区失效后的实例余量?​

出现公司:暂无已核验的公开来源(本站自测)

考察重点:安全吞吐、故障域与负载均衡假设。

相关内容:可用区故障余量。

参考回答

每实例安全吞吐为 500 QPS 时,每区至少需要 6 个实例。

任一区失效后,剩余 12 个实例共承接 6000 QPS。计算假设三地均衡且下游容量足够。倾斜、增长和预热还需额外余量。

11. 参考资料​