2. SLI 基础概念:服务等级指标的定义与常见类型

服务等级指标(Service Level Indicator, SLI)是衡量服务某个特定维度质量水平的量化度量值。它是整个可靠性工程体系的“测量仪表盘”,所有后续的 SLO 制定、错误预算计算、告警阈值设计都建立在 SLI 的准确采集与口径定义之上。

一个合格的 SLI 必须满足三个条件:可测量(能从监控系统或日志中获取原始数据)、可对比(在不同时间窗口内保持口径一致)、可行动(指标恶化时能触发明确的运维动作)。

2.1 SLI 的核心定义与构成要素

SLI 通常由 测量对象、测量维度、聚合方式 和 时间窗口 四个要素组成。以“API 网关 99 分位延迟”为例:

构成要素 示例值 说明
测量对象 API 网关请求 明确被测量的服务或资源
测量维度 延迟(Latency) 从请求到达网关到响应完成的时间
聚合方式 P99(99 分位值) 排序后第 99% 位置的延迟值
时间窗口 5 分钟滚动窗口 每 5 分钟计算一次该窗口内的 P99 值
口径注入关键点: 在自动化校验场景中,SLI 的“聚合方式”和“时间窗口”是最常通过参数注入动态调整的两个要素。同一个原始数据,使用 P50 还是 P99、窗口是 1 分钟还是 10 分钟,会得到完全不同的指标曲线。

2.2 常见 SLI 类型详解

业界最通用的 SLI 分类遵循 Google SRE 经典模型,主要包含以下三大类:延迟、错误率、吞吐量。此外,饱和度 和 可用性 也常作为补充指标。

常见 SLI 类型分类体系 SLI 类型 延迟 (Latency) P50 / P95 / P99 错误率 (Error Rate) HTTP 5xx / 业务错误码 吞吐量 (Throughput) RPS / QPS / TPS 请求耗时分布 失败请求占比 单位时间请求数 口径注入提示 延迟的百分位选择、错误码范围定义、吞吐量统计窗口,均可通过参数注入动态调整

2.3 延迟(Latency)

延迟衡量服务响应请求所花费的时间,是最敏感的用户体验指标之一。延迟 SLI 通常使用 百分位值 而非平均值,因为平均值容易掩盖尾部延迟问题。

  • P50(中位数):反映大多数用户的体验,适合作为基准监控。
  • P95 / P99:反映长尾延迟,直接影响用户流失率,是 SLO 的常用目标。
  • P99.9:用于高敏感服务(如支付、实时通信),但统计稳定性较差。
最佳实践: 在自动化校验中,建议将延迟 SLI 的百分位和窗口大小设计为可注入参数。例如,日常巡检使用 P95 + 5 分钟窗口,深度分析时切换为 P99 + 1 分钟窗口,无需修改代码即可切换口径。

2.4 错误率(Error Rate)

错误率衡量请求失败的占比,通常以百分比或小数形式表示。错误率的定义口径需要特别注意“什么是错误”的边界划分。

错误类型 典型示例 口径注入场景
HTTP 协议层错误 5xx 服务端错误、4xx 客户端错误 可配置是否将 4xx 计入错误率
业务逻辑错误 订单创建失败、库存不足 通过业务码白名单/黑名单动态定义
超时错误 客户端/服务端超时 超时阈值作为参数注入
熔断/降级错误 限流返回 429、熔断返回 503 区分主动保护与真实故障
常见陷阱: 不同团队对“错误”的定义可能不一致。例如,某些系统将 4xx 视为客户端问题不计入错误率,而另一些系统将 4xx 中的 401/403 也视为服务可用性问题。在参数注入设计中,必须将“错误判定规则”作为一级注入参数暴露。

2.5 吞吐量(Throughput)

吞吐量衡量服务在单位时间内处理的请求数量,常用单位包括 RPS(每秒请求数)、QPS(每秒查询数)、TPS(每秒事务数)。吞吐量 SLI 通常与系统容量规划和限流策略直接相关。

  • 峰值吞吐量:服务在正常延迟范围内能承受的最大请求数。
  • 当前吞吐量:实时监控的请求量,用于判断流量是否异常。
  • 基线吞吐量:历史同期或正常时段的平均吞吐量,作为异常检测的参考。
吞吐量 SLI 与延迟、错误率的关系 吞吐量上升 RPS / QPS 增加 延迟上升 P99 延迟增加 错误率上升 5xx / 超时增加 容量拐点检测 当吞吐量持续上升而延迟开始显著增加时, 说明系统接近容量上限;若错误率同步上升, 则系统已过载。吞吐量 SLI 的窗口大小直接影响拐点判断灵敏度。

2.6 SLI 口径参数注入的映射关系

在《质量门禁自动化校验》体系中,上述三类 SLI 的每个构成要素都需要映射为可注入的参数。下表总结了常见 SLI 类型与注入参数的对应关系:

SLI 类型 可注入参数 参数示例 影响范围
延迟 百分位、窗口大小、单位 percentile=99, window=5m, unit=ms 目标值、告警阈值
错误率 错误码范围、分母选择、计算方式 error_codes=5xx, denominator=total_requests 错误预算、门禁判定
吞吐量 统计窗口、聚合函数、对比基线 window=1m, agg=avg, baseline=7d_avg 容量评估、限流触发
核心设计原则: SLI 口径的参数注入不是简单的“改个数字”,而是将可靠性度量体系从静态配置升级为动态可编程。通过参数注入,同一套校验流水线可以在开发环境使用宽松口径(如 P95 + 10 分钟窗口),在生产环境使用严格口径(如 P99.9 + 1 分钟窗口),实现环境差异的自动化适配。