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%
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 告警。