2. SLO 基础概念:SLI、SLO、错误预算的定义与数学关系
在基于 SLO 反推容量压测水位的设计中,首先需要建立三个核心概念:SLI(服务等级指标)、SLO(服务等级目标)和错误预算。这三者构成了可观测性与容量管理的数学基础。
2.1 SLI:服务等级指标
SLI 是对服务质量的直接量化度量,通常表示为一段时间内“好事件”占总事件的比例。常见的 SLI 类型包括:
| SLI 类型 | 定义 | 典型指标 |
|---|---|---|
| 可用性 | 请求成功比例 | HTTP 200 / 总请求数 |
| 延迟 | 响应时间在阈值内的比例 | p99 延迟 < 200ms 的请求占比 |
| 吞吐量 | 单位时间处理请求数 | QPS / RPS |
| 错误率 | 失败请求比例 | 5xx 错误 / 总请求数 |
| 饱和度 | 资源使用程度 | CPU 使用率 / 内存使用率 |
容量视角提示:在压测场景中,延迟 SLI 和错误率 SLI 是最敏感的指标。当系统接近容量极限时,延迟会先于错误率出现拐点,因此延迟 SLI 常被用作容量水位的早期预警信号。
2.2 SLO:服务等级目标
SLO 是为 SLI 设定的目标阈值,表示服务提供方承诺达到的质量水平。SLO 通常以“时间窗口内的百分比”形式定义:
- 示例 1:“在 30 天滚动窗口内,99.9% 的请求延迟低于 200ms”
- 示例 2:“在 7 天窗口内,99.99% 的请求返回 HTTP 2xx/3xx”
- 示例 3:“在 1 小时窗口内,错误率不超过 0.1%”
SLO 的严格程度直接影响容量规划策略:
| SLO 等级 | 允许不可用时间/月 | 容量冗余要求 |
|---|---|---|
| 99.9%(三个九) | 约 43 分钟 | 中等 |
| 99.99%(四个九) | 约 4.3 分钟 | 较高 |
| 99.999%(五个九) | 约 26 秒 | 极高 |
2.3 错误预算:SLO 的数学衍生
错误预算 = 1 − SLO,表示在时间窗口内允许的“坏事件”总量。它是连接 SLO 与运维决策的桥梁。
核心公式:
错误预算 = 总事件数 × (1 − SLO)
消耗的错误预算 = 总事件数 × 错误率
剩余错误预算 = 错误预算 − 已消耗错误预算
错误预算 = 总事件数 × (1 − SLO)
消耗的错误预算 = 总事件数 × 错误率
剩余错误预算 = 错误预算 − 已消耗错误预算
示例计算:某服务月总请求数为 10,000,000,SLO 为 99.9%:
错误预算 = 10,000,000 × (1 − 0.999) = 10,000 次错误
如果本月已发生 6,000 次错误,则:
剩余错误预算 = 10,000 − 6,000 = 4,000 次错误
错误预算消耗率 = 6,000 / 10,000 = 60%
2.4 三者的数学关系与容量映射
SLI、SLO 和错误预算构成一个闭环反馈系统,其数学关系可概括为:
- 测量:实时计算 SLI = 好事件数 / 总事件数
- 比较:将 SLI 与 SLO 阈值比较,判断是否达标
- 预算:计算剩余错误预算 = 总预算 − 已消耗预算
- 决策:当错误预算消耗过快时,触发容量评估或限流
在容量压测场景中,这一关系转化为:
压测水位阈值 = f(SLI 拐点, 错误预算消耗速率)
其中:
SLI 拐点 = 延迟或错误率开始急剧上升的负载点
错误预算消耗速率 = 单位时间消耗的错误预算 / 总错误预算
常见误区:不要将 SLO 直接等同于容量阈值。SLO 是长期目标,而容量压测需要找到“SLI 开始劣化”的短期拐点。错误预算的作用是告诉你“还有多少空间可以承受短期劣化”。
2.5 容量压测中的错误预算视角
在容量规划中,错误预算提供了风险量化的数学基础:
- 高错误预算剩余:可以承受更高强度的压测,快速探索系统极限
- 低错误预算剩余:压测需谨慎,优先保障生产稳定性
- 错误预算消耗速率:反映系统劣化速度,用于确定压测步长
压测水位口径公式(初步):
安全压测水位 = 当前负载 × (1 + 剩余错误预算比例 × 安全系数)
其中安全系数通常取 0.3~0.7,取决于服务的重要程度
安全压测水位 = 当前负载 × (1 + 剩余错误预算比例 × 安全系数)
其中安全系数通常取 0.3~0.7,取决于服务的重要程度