2. SLO 基础概念:SLI、SLO、错误预算与 SLA 的区别

在平台工程团队中,SLO(Service Level Objective)是连接用户期望与系统可靠性的核心契约。要正确制定 SLO,必须先理解其底层组件:SLI(服务水平指标)、错误预算,以及它与传统 SLA(服务水平协议)的本质区别。本节将逐一拆解这些概念,并给出平台工程场景下的实战映射。

2.1 服务水平指标(SLI)—— 可靠性的可量化度量

SLI 是对服务某个特定维度的量化测量,通常是“好事件 / 总事件”的比率。平台工程团队需要为每个关键用户旅程定义 SLI。

SLI 通用公式: SLI = 符合预期标准的请求数 / 总请求数 × 100%

常见的 SLI 维度包括:

维度 典型指标 平台工程示例
可用性 请求成功率 API Gateway 返回 2xx/3xx 的比率
延迟 P95 / P99 响应时间 开发者自服务门户页面加载时间 ≤ 2s
吞吐量 每秒请求数(RPS) CI/CD Pipeline 每分钟构建触发次数
准确性 数据一致性比率 服务目录中资源状态与真实环境一致的比例
新鲜度 数据延迟时间 平台成本数据更新延迟 ≤ 15 分钟
平台工程实践建议: 每个平台服务至少定义 2-3 个 SLI,优先覆盖“可用性”和“延迟”两个维度。SLI 的测量窗口通常为滚动 30 天。
SLI 测量模型:从原始数据到可靠性比率 原始观测数据 请求日志 / 指标 Trace 数据 SLI 计算引擎 好事件 / 总事件 滚动窗口聚合 维度过滤 SLI 比率 99.95% (30 天滚动) 关键原则: 1. SLI 必须可自动化采集,避免人工上报 2. 测量窗口建议使用滚动时间窗(如 30 天),避免日历月效应

2.2 服务水平目标(SLO)—— 可靠性的目标阈值

SLO 是为 SLI 设定的目标值,表示“我们希望服务达到多可靠”。SLO 通常以百分比形式定义,并附带一个时间窗口。

SLO 标准格式: [SLI 名称] ≥ [目标值]% 在 [时间窗口] 内

平台工程团队典型 SLO 示例:

  • API 可用性 SLO: 平台 API 请求成功率 ≥ 99.9% 在 30 天滚动窗口内
  • 延迟 SLO: P95 响应时间 ≤ 500ms 在 7 天滚动窗口内
  • 管道成功率 SLO: CI/CD 构建成功率 ≥ 95% 在 30 天滚动窗口内
常见陷阱: 不要将 SLO 设定为 100%。100% 的目标意味着零故障容忍,会导致过度工程化、成本失控,且无法指导错误预算决策。平台工程团队建议从 99.9% 开始,逐步调整。

2.3 错误预算 —— 可靠性的“风险预算”

错误预算 = 100% - SLO。它表示在 SLO 时间窗口内,服务可以“出错”的最大时间量或请求量。错误预算将可靠性从“目标”转化为“可消耗的资源”。

SLO 目标 错误预算(30 天) 错误预算(7 天) 平台工程含义
99.9% 43.2 分钟 10.1 分钟 每月可接受约 43 分钟的平台不可用
99.95% 21.6 分钟 5.0 分钟 适合核心基础设施服务
99.99% 4.3 分钟 1.0 分钟 仅用于关键控制平面
错误预算的核心价值: 当错误预算充足时,团队可以安全地部署新功能、进行实验;当错误预算耗尽时,团队应冻结发布,优先进行稳定性工作。这为平台工程团队提供了数据驱动的发布决策机制。
错误预算驱动决策流程 错误预算池 初始 = 100% - SLO(如 0.1% × 时间窗口) 错误预算消耗:故障时间 + 延迟超标 + 错误响应 每次不符合 SLI 的事件都会消耗错误预算 ✅ 错误预算充足 允许发布新功能 / 实验 🚫 错误预算耗尽 冻结发布,启动稳定性工作

2.4 SLO 与 SLA 的区别

SLA(Service Level Agreement)是法律/商业契约,而 SLO 是技术/工程目标。两者经常被混淆,但用途和约束力完全不同。

对比维度 SLO(服务水平目标) SLA(服务水平协议)
性质 内部技术目标 外部法律/商业契约
约束力 无惩罚,团队自律 有惩罚条款(如服务抵扣、罚款)
受众 平台工程团队、SRE 客户、业务方、法务
严格程度 通常比 SLA 更严格(内部目标 > 外部承诺) 通常比 SLO 宽松(留有余地)
变更频率 可随服务演进调整 合同期内固定,变更需双方同意
平台工程示例 内部 SLO:API 可用性 ≥ 99.95% 对外 SLA:API 可用性 ≥ 99.9%(含赔偿条款)
平台工程最佳实践: 始终将内部 SLO 设定得比对外 SLA 更严格(例如 SLO = 99.95%,SLA = 99.9%)。这为团队提供了缓冲空间,确保即使 SLO 偶尔未达标,SLA 仍可满足,避免触发赔偿。

2.5 概念关系总结

四个概念构成一个完整的可靠性管理闭环:

  1. SLI 告诉你“现在怎么样”(测量)
  2. SLO 告诉你“应该怎么样”(目标)
  3. 错误预算 告诉你“还剩多少犯错空间”(风险预算)
  4. SLA 告诉你“对外承诺了什么”(商业契约)
平台工程团队常见误区: 不要用 SLA 替代 SLO。SLA 是商业底线,SLO 是工程指南。只关注 SLA 会导致团队在 SLA 边缘试探,缺乏持续改进的动力。始终以 SLO 为内部驱动力。