1. SLO 基础概念:什么是 SLO、SLI、SLA
在开始配置跨环境参数之前,必须建立对 SLO 体系的基础认知。SLO、SLI、SLA 是站点可靠性工程(SRE)中三个紧密关联但截然不同的概念,它们共同构成了服务质量的度量与承诺框架。
1.1 核心定义
| 术语 | 全称 | 核心定义 | 典型示例 |
|---|---|---|---|
| SLI | Service Level Indicator 服务等级指标 |
对服务质量的某个维度进行实际测量的量化指标 | 请求延迟 P99 = 200ms |
| SLO | Service Level Objective 服务等级目标 |
对 SLI 设定的目标阈值或范围,是团队内部追求的质量目标 | 99.9% 的请求延迟 ≤ 200ms |
| SLA | Service Level Agreement 服务等级协议 |
服务提供方与用户之间的正式合同,包含未达标的惩罚条款 | 月度可用性 ≥ 99.95%,否则赔偿 10% 月费 |
关键记忆点:SLI 是测量值,SLO 是目标值,SLA 是合同值。SLO 通常比 SLA 更严格,为 SLA 提供缓冲。
1.2 三者关系与区别
三者的关系可以用一个递进漏斗来理解:从原始测量到内部目标,再到对外承诺。
1.3 典型 SLI 分类
SLI 通常从以下四个维度进行定义,每个维度对应不同的测量方法:
- 可用性(Availability):服务正常响应请求的时间比例。常用公式:
成功请求数 / 总请求数 × 100% - 延迟(Latency):请求从发出到收到响应的时间。常用分位数:P50、P95、P99
- 吞吐量(Throughput):单位时间内处理的请求数量。常用单位:RPS(Requests Per Second)
- 错误率(Error Rate):返回错误响应的请求比例。常用公式:
HTTP 5xx 数 / 总请求数 × 100%
实践建议:在定义 SLI 时,优先选择用户可感知的指标。例如,对于 Web 服务,首字节时间(TTFB)比服务器 CPU 使用率更适合作为 SLI。
1.4 SLO 与 SLA 的典型数值对比
| 服务类型 | 典型 SLO | 典型 SLA | 每月允许不可用时间(基于 SLO) |
|---|---|---|---|
| 核心数据库 | 99.99% | 99.95% | 4.32 分钟 |
| API 网关 | 99.95% | 99.9% | 21.6 分钟 |
| Web 前端 | 99.9% | 99.5% | 43.2 分钟 |
| 内部工具 | 99.5% | 99.0% | 3.6 小时 |
常见误区:不要将 SLO 直接等同于 SLA。SLO 是团队内部追求的目标,通常比 SLA 更严格,为 SLA 提供 1-2 个 9 的缓冲空间。如果 SLO 与 SLA 相同,则任何 SLO 违规都会直接触发 SLA 赔偿。