2. 核心概念:SLO、SLI 与误差预算的定义及数学关系

在可靠性工程体系中,SLO(服务等级目标)、SLI(服务等级指标)与误差预算(Error Budget)构成了闭环决策的三大支柱。理解三者的定义与数学关系,是驱动可靠性评审与迭代优化的前提。

2.1 定义与职责边界

概念 英文全称 核心定义 典型示例
SLI Service Level Indicator 对服务某个维度的直接量化测量,反映真实运行状态。 请求延迟 P99、错误率、吞吐量
SLO Service Level Objective 对 SLI 设定的目标阈值或范围,代表“足够好”的边界。 P99 延迟 ≤ 200ms(30天滚动窗口)
误差预算 Error Budget SLO 允许的最大不可用额度,即 1 - SLO 的时间或事件比例。 SLO = 99.9% → 误差预算 = 0.1%
关键区分: SLI 是“测量值”,SLO 是“承诺值”,误差预算是“可用容错空间”。三者构成从观测到决策的完整链路。

2.2 数学关系:从 SLI 到误差预算

误差预算的数学基础建立在 SLI 与 SLO 的差值之上。设服务在时间窗口 T 内的总请求数为 N,其中成功请求数为 S,则:

SLI = S / N          (例如:成功率 = 成功请求数 / 总请求数)
SLO = 目标阈值       (例如:SLO = 99.9%)

误差预算 = 1 - SLO   (以比例表示)
已消耗误差 = 1 - SLI (当前实际不可用比例)
剩余误差预算 = (1 - SLO) - (1 - SLI) = SLI - SLO

当 SLI ≥ SLO 时,剩余误差预算 ≥ 0,服务处于合规状态;当 SLI < SLO 时,误差预算耗尽,触发可靠性评审与冻结发布。

实践要点: 误差预算通常以“分钟/月”或“请求数/窗口”为单位。例如 SLO = 99.9%(30天),则误差预算 = 0.1% × 30 × 24 × 60 = 43.2 分钟。团队可在此额度内安排发布、实验或维护。

2.3 三者的闭环关系图

下图展示了 SLI、SLO 与误差预算在可靠性评审流程中的核心位置与数据流向:

SLI → SLO → 误差预算 闭环关系 SLI 服务等级指标 (测量值:延迟/错误率) SLO 服务等级目标 (承诺阈值:99.9%) 误差预算 Error Budget (容错额度:0.1%) 对比 计算 SLI ≥ SLO ? 误差预算 ≥ 0 合规 继续发布 违规 冻结发布 可靠性评审与优化 核心公式:误差预算 = 1 - SLO;已消耗误差 = 1 - SLI;剩余误差预算 = SLI - SLO 当剩余误差预算 < 0 时,触发可靠性评审与发布冻结

2.4 误差预算的消耗与恢复机制

误差预算并非静态额度,而是随时间窗口滚动消耗与恢复。下表对比了两种常见窗口策略:

窗口类型 计算方式 优点 缺点
固定日历窗口 按月/季度重置预算 简单直观,便于财务对齐 月初预算充足时可能放松警惕
滚动时间窗口 过去 N 天/周的滑动窗口 持续反映近期可靠性状态 计算复杂,需持续聚合数据
常见误区: 误差预算耗尽 ≠ 服务完全不可用。它仅表示在 SLO 定义的时间窗口内,不可用比例已超过承诺阈值。此时应优先恢复可靠性,而非继续追求发布速度。

2.5 多层级 SLO 与误差预算分解

大型系统通常按服务层级定义多级 SLO。下图展示了一个典型的三层分解结构:

多层级 SLO 与误差预算分解 用户可见 SLO 整体可用性 99.95% | 误差预算 0.05% 服务 A SLO 99.97% | 误差预算 0.03% 服务 B SLO 99.98% | 误差预算 0.02% 组件 1 SLO 99.99% 组件 2 SLO 99.99% 组件 3 SLO 99.98% 组件 4 SLO 99.99% 分解原则:下层 SLO 之和应严格高于上层 SLO,为层级间误差预算留出缓冲
分解原则: 下层组件的 SLO 必须比上层更严格(数值更高),以确保整体 SLO 可达。例如,若用户可见 SLO 为 99.95%,则依赖的服务 SLO 应设为 99.97% 或更高,组件级 SLO 则需达到 99.99% 级别。

2.6 误差预算在可靠性评审中的角色

  • 决策触发器: 当剩余误差预算低于阈值(如 20%)时,自动触发可靠性评审会议。
  • 发布阀门: 误差预算耗尽期间,禁止任何非紧急发布,仅允许修复性变更。
  • 投资优先级: 误差预算消耗速率反映可靠性债务,指导团队将工程资源投入最薄弱的环节。
  • 沟通语言: 用“误差预算还剩多少分钟”替代模糊的“系统不太稳定”,建立跨团队共识。
台账管理建议: 在可靠性评审中,使用误差预算台账记录每个服务的 SLO、当前 SLI、剩余预算、消耗速率及趋势。台账应支持按周/月滚动查看,并标注触发评审的历史事件。