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 三者的关系与数据流
下图展示了从原始观测到业务承诺的完整数据流动路径:
1.3 为什么需要 SLO?—— 四大核心价值
- 量化可靠性:将“系统稳定”这种模糊描述转化为可度量的数字(如:99.9% 请求在 200ms 内完成)。
- 指导调度决策:SLO 直接驱动错误预算(Error Budget)的计算,进而决定发布节奏、扩容策略、降级开关的触发时机。
- 对齐业务与工程:产品经理、开发、运维使用同一套语言沟通,避免“我觉得系统慢”的主观争论。
- 控制成本:没有 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 目标,深入探讨具体的调度策略调优方法。