2. 误差预算基础:服务等级目标(SLO)与服务等级指标(SLI)定义、误差预算的计算方法、误差预算与缓存命中率的关系

2.1 服务等级指标(SLI)与服务等级目标(SLO)定义

在制品供应链中,代理缓存命中率是衡量缓存服务质量的核心指标。我们需要先定义两个基础概念:SLI 和 SLO。

术语 英文全称 定义 Nexus 代理缓存场景示例
SLI Service Level Indicator 服务等级指标,是实际测量到的服务质量数值 过去 30 天内代理缓存命中的请求数 / 总请求数 = 0.85
SLO Service Level Objective 服务等级目标,是团队承诺或期望达到的 SLI 阈值 代理缓存命中率 ≥ 90%(即 0.90)
关键区别: SLI 是“实际值”,SLO 是“目标值”。误差预算围绕两者之间的差距进行计算。

2.2 误差预算的计算方法

误差预算(Error Budget)定义为 1 - SLO,表示在给定时间窗口内,服务允许“不达标”的最大比例。对于缓存命中率场景,计算公式如下:

误差预算 = 1 - SLO
允许的不命中次数 = 总请求数 × 误差预算

示例:
SLO = 90% (0.90)
总请求数 = 1,000,000
误差预算 = 1 - 0.90 = 0.10 (10%)
允许的不命中次数 = 1,000,000 × 0.10 = 100,000 次

实际消耗的误差预算计算方式:

已消耗误差预算 = (实际不命中次数 / 总请求数) / (1 - SLO) × 100%

示例:
实际不命中次数 = 120,000
已消耗误差预算 = (120,000 / 1,000,000) / 0.10 × 100% = 120%
→ 超出预算 20%,触发告警
实践建议: 在 Nexus 仓库中,建议将误差预算窗口设置为 30 天滚动窗口,与制品发布周期对齐。每日计算一次已消耗预算,当消耗超过 80% 时进入预警状态。

2.3 误差预算与缓存命中率的关系

缓存命中率直接决定误差预算的消耗速度。以下是两者之间的量化关系:

缓存命中率 不命中率 SLO = 90% 时的误差预算消耗 状态
95% 5% 5% / 10% = 50% 健康
90% 10% 10% / 10% = 100% 临界
85% 15% 15% / 10% = 150% 超预算
80% 20% 20% / 10% = 200% 严重超预算

核心关系公式:

误差预算消耗率 = (1 - 实际命中率) / (1 - SLO)

当 实际命中率 ≥ SLO 时,消耗率 ≤ 100%
当 实际命中率 < SLO 时,消耗率 > 100%
误差预算与缓存命中率关系图 SLI 实际命中率 例如:85% SLO 目标命中率 例如:90% 误差预算计算引擎 消耗率 = (1-SLI) / (1-SLO) 预算充足 消耗率 ≤ 80% 预算预警 80% < 消耗率 ≤ 100% 预算超支 消耗率 > 100% 误差预算消耗率与缓存命中率的关系 命中率每下降 1%,误差预算消耗率加速上升(非线性关系) 例如:SLO=90% 时,命中率从 89% 降至 88%,消耗率从 110% 升至 120%

2.4 误差预算在 Nexus 代理缓存中的实际应用

在制品供应链中,误差预算机制帮助团队做出以下决策:

  • 缓存策略调整: 当误差预算消耗超过 80% 时,主动增加缓存 TTL 或预热热门制品。
  • 发布节奏控制: 预算充足时允许频繁发布新版本;预算紧张时冻结非关键发布,优先恢复缓存命中率。
  • 告警阈值设定: 基于误差预算消耗率设置多级告警,而非仅依赖原始命中率。
常见误区: 不要将 SLO 设置为 100%。缓存场景中总存在首次请求、制品更新等不可避免的未命中情况。建议 SLO 设置在 85%–95% 之间,保留合理的误差预算用于正常的制品更新和版本发布。

2.5 误差预算台账记录规范

在《Nexus仓库制品供应链误差预算台账》中,每条记录应包含以下字段:

字段 类型 说明
时间窗口 日期范围 例如 2025-01-01 ~ 2025-01-30
SLI 实际命中率 百分比 从 Nexus 监控 API 采集
SLO 目标命中率 百分比 团队定义的阈值
误差预算总额 百分比 1 - SLO
已消耗预算 百分比 (1 - SLI) / (1 - SLO) × 100%
剩余预算 百分比 100% - 已消耗预算
状态 枚举 健康 / 预警 / 超支
台账自动化建议: 使用 Nexus 的 REST API 每小时拉取代理缓存统计,结合 Prometheus 存储 SLI 数据,通过 Grafana 展示误差预算仪表板。当预算消耗超过 80% 时自动触发 PagerDuty 告警。