3. SLA 核心概念:SLA、SLI、SLO 与错误预算

在构建服务画像与弹性伸缩运营体系之前,必须统一团队对 SLA 核心概念的语言。本章将定义 SLA、SLI、SLO 与错误预算四个基础概念,并建立它们之间的量化推导关系。

3.1 概念定义与职责边界

概念 英文全称 核心定义 典型粒度
SLA Service Level Agreement 服务提供商与客户之间的正式合同承诺,包含违约赔偿条款 产品 / 客户合同
SLI Service Level Indicator 服务质量的原始可测量指标,如延迟、错误率、吞吐量 单个请求 / 时间窗口
SLO Service Level Objective 对 SLI 设定的目标阈值,如“99.9% 的请求延迟 < 200ms” 滚动窗口(如 30 天)
错误预算 Error Budget SLO 允许的不可用时间或失败次数 = 1 − SLO 月度 / 季度预算池
关键认知:SLA 是法律合同,SLO 是内部工程目标,SLI 是原始数据,错误预算则是风险控制工具。弹性伸缩的健康口径应基于 SLO 而非 SLA 设计,因为 SLO 更贴近实际运营窗口。

3.2 四者之间的量化推导关系

下图展示了从原始指标到合同承诺的完整链路:

SLA-SLI-SLO-错误预算关系图 SLA → SLI → SLO → 错误预算 量化推导链路 SLI 原始指标 延迟 / 错误率 / 吞吐量 SLO 服务等级目标 99.9% 请求 < 200ms 错误预算 1 − SLO = 0.1% SLA 服务等级协议 合同承诺 + 赔偿条款 设定阈值 计算剩余 SLO 松于 SLA(内部留余量) 预算耗尽触发 SLA 违约风险 内部运营使用 SLO 对外合同使用 SLA
推导公式:
错误预算 = 1 − SLO(例如 SLO = 99.9%,则错误预算 = 0.1%)。
月度错误预算分钟数 = 总分钟数 × (1 − SLO) = 43200 × 0.001 = 43.2 分钟 / 月。

3.3 SLI 的选取原则与常见类型

SLI 必须直接反映用户体验,且可被自动化采集。以下是弹性伸缩场景中最常用的 SLI 分类:

SLI 类别 典型指标 采集方式 弹性伸缩关联性
延迟 P50 / P95 / P99 响应时间 APM / 中间件埋点 高延迟触发扩容
错误率 HTTP 5xx 占比 / 业务错误码 负载均衡日志 / 业务监控 错误率突增触发熔断或扩容
吞吐量 QPS / TPS / 并发连接数 网关 / 服务网格指标 吞吐量接近上限触发扩容
饱和度 CPU / 内存 / 连接池使用率 基础设施监控 饱和度超过阈值触发扩容
避坑提示:不要将基础设施指标(如 CPU 使用率)直接作为 SLI 的 SLO 目标。CPU 高不一定代表用户体验受损,应优先选择端到端的请求延迟或错误率作为核心 SLI。

3.4 SLO 的设定方法与常见误区

SLO 的设定需要平衡用户体验与运营成本。以下是推荐的设定步骤:

  1. 收集历史数据:分析过去 30-90 天的 SLI 分布,找到自然波动区间。
  2. 确定目标百分位:通常使用 P99 或 P95 作为 SLO 的统计窗口。
  3. 设定宽松内部 SLO:内部 SLO 应比对外 SLA 严格 10%-20%,预留错误预算缓冲。
  4. 定义多级 SLO:例如“核心 API P99 延迟 < 200ms(SLO1)”、“非核心 API P99 延迟 < 500ms(SLO2)”。
  5. 定期评审调整:每季度根据业务增长和架构变化重新校准 SLO。
常见误区 错误表现 正确做法
SLO 等于 SLA 内部目标与合同承诺完全一致,无缓冲 内部 SLO 应比 SLA 严格 10%-20%
单一 SLO 覆盖所有请求 忽略不同 API 路径的差异化要求 按业务重要性分级设定 SLO
SLO 设定后不调整 业务增长后 SLO 过松或过严 每季度基于数据重新校准

3.5 错误预算的运营机制

错误预算将 SLO 转化为可消耗的“风险额度”,是弹性伸缩决策的核心输入。下图展示了错误预算的消耗与恢复周期:

错误预算消耗与恢复周期 错误预算月度运营周期 总错误预算 = 43200 分钟 × (1 − SLO) = 43.2 分钟(SLO = 99.9%) 已消耗:28 分钟(65%) 剩余:15.2 分钟 每日恢复速率 = 总预算 / 30 天 ≈ 1.44 分钟 / 天 预算消耗 > 80%:触发弹性伸缩冻结 优先恢复稳定性,暂停非关键变更 错误预算耗尽 触发 SLA 违约赔偿
错误预算驱动的弹性伸缩策略:
• 当错误预算消耗 < 50%:允许激进扩容,快速响应流量增长。
• 当错误预算消耗 50%-80%:转为保守扩容,优先使用现有资源。
• 当错误预算消耗 > 80%:冻结所有非必要变更,仅执行缩容以降低成本。
• 当错误预算耗尽:立即启动熔断机制,停止所有弹性伸缩操作,进入人工应急模式。

3.6 核心概念总结

概念 一句话总结 在弹性伸缩中的角色
SLA 对外合同承诺,包含赔偿条款 定义伸缩的底线约束
SLI 原始可测量指标 作为伸缩触发条件的输入数据
SLO 内部服务质量目标 设定伸缩的健康阈值
错误预算 允许的不可用额度 控制伸缩的激进程度与风险