2. SRE 基础回顾
在深入《Golden Signals 误差预算》之前,必须统一三个核心术语的定义。SLI、SLO、SLA 构成了 SRE 所有量化决策的基石。理解它们的区别与联系,是后续计算误差预算、触发告警、进行复盘的前提。
2.1 核心定义
| 术语 | 英文全称 | 定义 | 核心特征 |
|---|---|---|---|
| SLI | Service Level Indicator | 服务等级指标,是对某个服务质量维度的具体量化测量值。 | 可测量、可聚合、通常为比率(如成功率、延迟分位数)。 |
| SLO | Service Level Objective | 服务等级目标,是团队为 SLI 设定的目标阈值或范围。 | 内部承诺、驱动工程决策、是误差预算的边界。 |
| SLA | Service Level Agreement | 服务等级协议,是面向客户或外部实体的正式承诺,通常附带惩罚条款。 | 外部合同、法律约束、通常比 SLO 宽松。 |
SRE 黄金法则: 永远不要将 SLO 设置得比 SLA 更宽松。内部目标(SLO)必须比外部承诺(SLA)更严格,为团队预留缓冲空间,避免触发惩罚。
2.2 三者的层级关系
从数据采集到商业合同,SLI → SLO → SLA 构成了一个自下而上的金字塔结构。SLI 是原始观测数据,SLO 是内部质量标尺,SLA 是外部商业红线。
2.3 关键区别与常见误区
- SLI 是“测量值”,SLO 是“目标值”,SLA 是“合同值”。SLI 是事实,SLO 是期望,SLA 是底线。
- SLO 是内部工程驱动,SLA 是外部商业驱动。SLO 由 SRE 团队与产品团队共同制定;SLA 由法务、销售与客户协商确定。
- 一个 SLA 可以对应多个 SLO。例如,一个 SLA 承诺“99.9% 可用性”,但内部可能同时跟踪延迟 SLO(P99 < 500ms)和错误率 SLO(< 0.1%)。
- 并非所有 SLO 都需要升级为 SLA。许多内部质量指标(如缓存命中率、异步任务成功率)只作为 SLO 管理,不出现在 SLA 中。
2.4 典型示例:电商下单链路
| 层级 | 示例内容 | 说明 |
|---|---|---|
| SLI | 下单接口请求成功率 = 成功响应数 / 总请求数 | 每 1 分钟计算一次,原始指标 |
| SLO | 月度 SLI ≥ 99.95% | 内部目标,误差预算 = 0.05% |
| SLA | 月度可用性 ≥ 99.9%,否则赔付 5% 月费 | 外部合同,比 SLO 宽松 0.05% |
常见陷阱: 不要将 SLI 直接当作 SLO 使用。SLI 是原始数据,SLO 是经过时间窗口聚合后的目标。例如,单次 1 分钟窗口的 SLI 降到 99% 并不一定违反 SLO,需要看整个复合时间窗口(如 28 天滚动窗口)的聚合结果。
2.5 三者在误差预算中的角色
误差预算 = 1 - SLO。这个预算代表了服务在遵守 SLO 的前提下,允许出现故障的时间比例。SLI 的实际表现与 SLO 之间的差值,决定了误差预算的消耗速度。
2.6 实践建议:如何定义你的第一个 SLO
- 选择关键 SLI:从 Golden Signals(延迟、流量、错误、饱和度)中选取 2-3 个最能反映用户体验的指标。
- 确定测量窗口:通常使用 28 天或 30 天滚动窗口,避免单次抖动导致目标频繁变动。
- 设定初始 SLO:参考行业基准(如 99.9%、99.99%),但结合当前系统实际表现,设定一个“努力可达”的目标。
- 定义误差预算策略:明确当预算耗尽时,团队将冻结新功能发布,优先进行稳定性投入。
- 定期复审:每季度或每半年复审 SLO,根据业务增长和技术演进进行调整。
关键总结: SLI 是“测量什么”,SLO 是“目标多少”,SLA 是“承诺多少”。误差预算 = 1 - SLO,是连接 SLI 实际表现与工程决策的量化桥梁。在后续章节中,我们将基于此框架,深入 Golden Signals 的每个信号如何影响误差预算的计算与复核。