1. SLO 基础概念:什么是 SLO、SLI、SLA

在开始调度策略调优之前,必须建立一套统一的可靠性度量语言。SLO、SLI、SLA 是 Site Reliability Engineering(SRE)体系中最核心的三个概念,它们构成了从“用户感知”到“业务承诺”的完整量化链路。

1.1 核心定义

术语 全称 一句话定义 回答的问题
SLI Service Level Indicator 服务水平的直接度量指标 “我们测量什么?”
SLO Service Level Objective SLI 的目标阈值 “我们希望达到多少?”
SLA Service Level Agreement 与客户签订的正式承诺 “我们承诺多少?违约后果?”
关键区分: SLI 是“数据”,SLO 是“目标”,SLA 是“合同”。SLO 通常比 SLA 更严格,为内部留出缓冲空间。

1.2 三者的关系与数据流

下图展示了从原始观测到业务承诺的完整数据流动路径:

SLI → SLO → SLA 数据流与关系 SLI 服务水平指标 SLO 服务水平目标 SLA 服务水平协议 设定目标 对外承诺 典型关系:SLO 比 SLA 严格 20%~50% 例如:SLO 要求 99.9% 可用性,SLA 承诺 99.5%,中间 0.4% 作为错误预算缓冲 错误预算 = 1 − SLO 允许的故障时间窗口,驱动调度决策 推导

1.3 为什么需要 SLO?—— 四大核心价值

  1. 量化可靠性:将“系统稳定”这种模糊描述转化为可度量的数字(如:99.9% 请求在 200ms 内完成)。
  2. 指导调度决策:SLO 直接驱动错误预算(Error Budget)的计算,进而决定发布节奏、扩容策略、降级开关的触发时机。
  3. 对齐业务与工程:产品经理、开发、运维使用同一套语言沟通,避免“我觉得系统慢”的主观争论。
  4. 控制成本:没有 SLO 时容易过度追求“五个九”导致资源浪费;SLO 明确了“够好”的标准,优化资源投入产出比。
实战经验: 在调度策略调优中,SLO 是“北极星”。所有调度算法(如负载均衡、限流、重试、优先级队列)的最终目标都是在满足 SLO 的前提下最大化资源利用率。

1.4 SLI 的常见类型

调度策略最常关注的 SLI 分为以下四类:

SLI 类别 典型指标 调度策略关联
可用性 请求成功率、健康检查通过率 故障转移、熔断开关
延迟 P50/P95/P99 响应时间 负载均衡算法、超时配置
吞吐量 QPS、RPS、并发连接数 限流阈值、扩缩容策略
饱和度 CPU 使用率、内存占用、队列深度 优先级调度、背压机制

1.5 SLO 定义示例

一个典型的 SLO 定义包含三个要素:SLI 选择 + 时间窗口 + 目标阈值。

# 示例:API 网关 SLO 定义
SLI: 所有 HTTP GET 请求的 P99 延迟
时间窗口: 滚动 28 天
目标: P99 延迟 ≤ 200ms 的比例 ≥ 99.9%

# 等价表述
在任意连续的 28 天周期内,99.9% 的 HTTP GET 请求
其服务端响应时间不超过 200 毫秒。
常见误区: 不要定义“平均延迟”作为 SLO。平均值会掩盖长尾问题,调度策略调优的核心目标通常是优化 P99 甚至 P999 延迟。始终使用百分位指标。

1.6 本章小结

  • SLI 是测量值,SLO 是目标值,SLA 是承诺值。
  • SLO 是调度策略调优的决策依据和效果衡量标准。
  • 错误预算(1 − SLO)决定了系统可以承受的故障时间,直接影响发布和运维节奏。
  • 在后续章节中,我们将基于 SLO 目标,深入探讨具体的调度策略调优方法。