3. Error Budget 计算模型
Error Budget 的量化计算是灰度发布准入控制的核心。不同的业务场景对可用性的定义粒度不同,因此需要选择匹配的计算模型。本章详细阐述三种主流模型:基于时间窗口、基于请求量以及混合模型,并给出选择策略。
3.1 基于时间窗口的预算计算
该模型以不可用时间作为 Error Budget 的计量单位。它假设服务的可用性目标为“四个九”或“五个九”,并将允许的年度/月度停机时间按固定时间窗口(通常为 28 天或 30 天)进行切片。
核心公式
Error Budget (时间窗口) = 窗口总分钟数 × (1 - SLO)
剩余 Budget = Error Budget - 累计不可用分钟数
计算示例(99.9% SLO,28 天窗口)
| 指标 | 数值 | 说明 |
|---|---|---|
| 窗口总分钟数 | 28 × 24 × 60 = 40,320 | 4 周滚动窗口 |
| 允许不可用分钟数 | 40,320 × 0.001 = 40.32 分钟 | 约 40 分钟 |
| 已消耗不可用时间 | 25 分钟 | 由监控系统累计 |
| 剩余 Budget | 15.32 分钟 | 剩余可用额度 |
适用场景:基础设施层(网络、存储、Kubernetes 集群)、长周期批处理任务、对连续可用性要求极高的核心链路。
实践要点:时间窗口模型直观易懂,但无法区分“1 次 40 分钟故障”与“40 次 1 分钟抖动”。对于高频短时故障,建议配合事件计数或请求量模型使用。
3.2 基于请求量的预算计算
该模型以失败请求数作为计量单位。它将 SLO 转化为“每百万请求允许失败次数”,更适合高并发、短连接、对单次请求成功率敏感的业务。
核心公式
Error Budget (请求量窗口) = 窗口总请求数 × (1 - SLO)
剩余 Budget = Error Budget - 累计失败请求数
计算示例(99.95% SLO,每日 1 亿请求)
| 指标 | 数值 | 说明 |
|---|---|---|
| 每日总请求数 | 100,000,000 | 1 亿 |
| 允许失败请求数 | 100,000,000 × 0.0005 = 50,000 | 5 万次失败 |
| 当前累计失败数 | 32,000 | 过去 24 小时 |
| 剩余 Budget | 18,000 次 | 剩余可用额度 |
注意:请求量模型对流量毛刺敏感。如果某时段流量突增 10 倍,即使错误率不变,失败请求数也会飙升,导致 Budget 快速耗尽。建议配合滑动窗口(如 5 分钟粒度)进行平滑计算。
3.3 混合模型与选择策略
单一模型在复杂场景下存在盲区。混合模型将时间窗口与请求量结合,通过“双条件触发”或“加权融合”来提升准入判断的鲁棒性。
三种常见混合策略
| 策略名称 | 计算方式 | 优势 | 劣势 |
|---|---|---|---|
| 双条件与门 | 时间 Budget 且 请求量 Budget 均未耗尽 | 最保守,防止单一维度误判 | 可能过于严格,降低发布效率 |
| 双条件或门 | 时间 Budget 或 请求量 Budget 任一耗尽即阻断 | 快速响应异常,覆盖两种故障模式 | 可能因流量毛刺误阻断 |
| 加权融合 | Budget = α × 时间剩余率 + β × 请求量剩余率 (α + β = 1) |
灵活调节,可适配不同业务敏感度 | 权重需要持续调优 |
选择决策矩阵
| 业务特征 | 推荐模型 | 原因 |
|---|---|---|
| 长连接、流媒体、实时通信 | 时间窗口模型 | 连续可用时长是核心指标 |
| API 网关、微服务 RPC、电商下单 | 请求量模型 | 单次请求成功率直接影响收入 |
| 核心交易链路 + 基础设施 | 混合模型(双条件与门) | 双重保障,避免单一维度漏洞 |
| 非核心、实验性服务 | 请求量模型(宽松 SLO) | 简化计算,允许一定容错 |
推荐实践:在灰度发布准入场景中,建议采用加权融合混合模型。初始设置 α = 0.4(时间权重)、β = 0.6(请求量权重),运行 2 个迭代周期后根据实际阻断率与误报率调整。当任一维度剩余 Budget 低于 20% 时,自动切换为双条件与门模式,进入严格保护状态。
3.4 模型对比总结
| 维度 | 时间窗口模型 | 请求量模型 | 混合模型 |
|---|---|---|---|
| 计量单位 | 分钟 / 小时 | 失败请求数 | 两者加权或条件组合 |
| 对流量毛刺敏感度 | 低 | 高 | 中(可调节) |
| 对长尾故障敏感度 | 高 | 低 | 高 |
| 实现复杂度 | 低 | 中 | 高 |
| 灰度准入推荐度 | ★★★☆☆ | ★★★★☆ | ★★★★★ |
实施建议:在灰度发布平台中,建议将 Error Budget 计算模型设计为可配置策略。默认使用加权融合混合模型(α=0.4, β=0.6),并允许 SRE 团队在控制台一键切换为双条件与门模式(应对重大故障恢复期)或请求量模型(应对大促流量高峰)。