1. SLO 基础概念:服务等级目标、SLI 与错误预算
在开始多集群作业模板迁移验证之前,必须建立统一的 SLO 语言体系。SLO(Service Level Objective,服务等级目标)是站点可靠性工程(SRE)的核心量化工具,它把“服务是否健康”从主观判断转化为可度量、可审计的工程指标。
1.1 服务等级目标(SLO)定义
SLO 是服务提供方承诺的、在一段评估窗口内必须达到的可靠性阈值。它通常以百分比形式表达,例如“99.9% 的请求在 200ms 内完成”。SLO 不是 SLA(Service Level Agreement,服务等级协议),SLA 是带有惩罚条款的合同承诺,而 SLO 是内部工程团队自我约束的目标。
| 维度 | SLO | SLA |
|---|---|---|
| 受众 | 内部工程团队 | 客户 / 业务方 |
| 约束力 | 自我承诺,无惩罚 | 合同约束,有赔偿条款 |
| 粒度 | 可细化到单个 API、作业类型 | 通常为整体服务 |
| 调整频率 | 按迭代周期调整 | 按合同周期调整 |
关键认知:SLO 是“我们想要达到的目标”,SLA 是“我们必须达到的底线”。在多集群作业迁移场景中,SLO 用于指导迁移节奏和回滚决策,SLA 则用于对外承诺迁移期间的服务可用性。
1.2 SLI 与 SLO 的关系
SLI(Service Level Indicator,服务等级指标)是 SLO 的量化基础。没有 SLI,SLO 就是空头支票。SLI 是原始测量值,SLO 是对 SLI 施加的阈值约束。
- SLI 示例:请求延迟 P99、错误率、吞吐量、作业完成率。
- SLO 示例:“P99 延迟 ≤ 200ms”(对 SLI 的约束)。
SLI 与 SLO 的映射关系可以用以下公式表达:
SLO = 对 SLI 施加的阈值 + 评估窗口 + 达标比例
例如:
SLI = 请求延迟 P99
SLO = P99 ≤ 200ms,在 30 天滚动窗口内达标率 ≥ 99.9%
工程实践:一个 SLI 可以对应多个 SLO(例如:P99 延迟 SLO 和 P50 延迟 SLO),但一个 SLO 只能绑定一个 SLI。在多集群作业模板迁移中,我们至少需要定义“作业提交成功率 SLI”和“作业完成延迟 SLI”两个核心指标。
1.3 错误预算概念
错误预算(Error Budget)是 SLO 的衍生概念,它量化了服务在评估窗口内允许的“不可靠”总量。错误预算 = (1 - SLO) × 总时间窗口。例如,99.9% SLO 的 30 天错误预算为 43.2 分钟。
错误预算的核心价值在于:它把“可靠性”和“创新速度”放在同一个天平上衡量。当错误预算充足时,团队可以放心地进行多集群迁移、模板升级、功能发布;当错误预算耗尽时,必须停止所有风险操作,全力恢复稳定性。
| SLO 目标 | 每日错误预算 | 每月错误预算(30天) | 典型场景 |
|---|---|---|---|
| 99.9% | 86.4 秒 | 43.2 分钟 | 生产核心作业 |
| 99.5% | 7.2 分钟 | 3.6 小时 | 批处理作业 |
| 99.0% | 14.4 分钟 | 7.2 小时 | 开发 / 测试集群 |
| 95.0% | 1.2 小时 | 36 小时 | 非关键实验作业 |
迁移陷阱:在多集群作业模板迁移期间,错误预算消耗速度会显著加快。建议在迁移窗口开始前预留至少 50% 的错误预算作为安全缓冲。如果迁移过程中错误预算消耗超过 30%,应立即触发回滚流程。
1.4 三者的协同关系
SLI、SLO、错误预算构成一个闭环反馈系统:
- 测量(SLI):持续采集作业提交成功率、延迟、吞吐量等原始指标。
- 评估(SLO):将 SLI 与预设阈值对比,判断是否达标。
- 决策(错误预算):根据剩余预算决定是否允许执行风险操作(如模板迁移)。
- 行动:执行迁移或回滚,并观察 SLI 变化,形成闭环。
多集群迁移中的实践要点:
- 每个集群独立定义 SLI,但 SLO 应统一对齐业务目标。
- 错误预算应在集群间共享还是隔离?建议按作业优先级划分预算池,核心作业共享高优先级预算池。
- 迁移过程中,SLI 的采集频率应从 5 分钟提升到 1 分钟,以便快速发现异常。