1. SLO基础概念回顾
在深入误差预算台账维度扩展之前,必须重新锚定SLO在可靠性工程中的核心位置。SLO不是孤立指标,而是连接用户感知与运维动作的契约桥梁。本节从定义、关系与地位三个层次展开。
1.1 服务等级目标(SLO)定义
SLO(Service Level Objective) 是服务所有者向内部或外部用户承诺的目标可靠性阈值,通常以“SLI达标的时间占比”表示。它不是“必须100%可用”的理想宣言,而是经过业务与成本权衡后设定的可接受失效边界。
| 概念 | 定义 | 示例 |
|---|---|---|
| SLO | 目标阈值,承诺SLI在统计窗口内达标的比例 | 99.9% 的请求延迟 ≤ 200ms(30天滚动窗口) |
| SLI | 实际测量的服务质量指标 | 过去1分钟内延迟 ≤ 200ms 的请求占比 |
| SLA | 与外部客户签订的合同约束,通常比SLO更严格 | 99.95% 可用性,否则赔偿 |
关键区分:SLO是内部工程目标,SLA是外部法律承诺。SLO通常比SLA更严格(例如SLA 99.9%,内部SLO设为99.95%),为响应延迟预留缓冲。
1.2 SLI与SLO的关系
SLI是测量值,SLO是目标值。二者通过误差预算形成闭环反馈:
- SLI → SLO:SLI是SLO的输入数据源,没有可靠的SLI测量,SLO就是空头支票。
- SLO → 误差预算:误差预算 = (1 - SLO) × 时间窗口。例如SLO=99.9%,30天窗口内允许的失效时间为 30×24×60×0.001 = 43.2分钟。
- 误差预算 → 决策:预算充足时允许快速发布;预算耗尽时冻结上线,优先恢复可靠性。
实践要点:SLI的采集粒度至少应为SLO窗口的1/100。例如30天窗口的SLO,SLI采集间隔不应超过7小时。推荐使用1分钟粒度,以便快速感知预算消耗速率。
1.3 SLO在可靠性工程中的核心地位
SLO是可靠性工程的锚点,它把抽象的“可靠”转化为可量化、可追踪、可决策的工程语言。没有SLO,团队容易陷入两种极端:要么追求100%可用性导致成本失控,要么对故障麻木不仁。
| 工程活动 | 无SLO时的状态 | 有SLO时的状态 |
|---|---|---|
| 容量规划 | 凭经验猜测,过度或不足 | 基于SLO目标反推冗余与扩缩容阈值 |
| 发布决策 | 人工判断风险,主观性强 | 误差预算充足则放行,不足则阻塞 |
| 故障响应 | 所有故障同等紧急,响应混乱 | 仅影响SLO的故障才触发P0/P1响应 |
| 成本优化 | 可靠性投入无上限或无人敢降本 | 在SLO允许范围内主动降本(如降级非关键路径) |
常见误区:SLO不是“越高越好”。99.99%的SLO相比99.9%需要多投入约10倍成本,但用户感知提升可能不足1%。SLO的本质是找到可靠性投入与业务收益的平衡点。
1.4 小结:SLO是可靠性工程的“北极星”
回顾三个核心要点:
- SLO是目标,不是现状。它定义了“多好才算够好”,为团队提供明确的可靠性方向。
- SLI是SLO的基石。没有准确、高粒度的SLI测量,SLO就是空中楼阁。
- 误差预算连接SLO与工程决策。它把抽象的百分比转化为具体的“剩余可用失效时间”,让发布、回滚、故障响应都有据可依。