3. 常见SLI类型

在可靠性评审中,SLI(Service Level Indicator)是衡量服务质量的量化指标。不同的 SLI 类型对应不同的服务特征和故障模式。校准阈值前,必须准确理解每种 SLI 的定义及其适用场景。本节将逐一解析五种核心 SLI 类型。

3.1 延迟 SLI(Latency SLI)

定义:延迟 SLI 衡量服务响应请求所花费的时间,通常以毫秒(ms)或秒(s)为单位。常见的统计口径包括平均延迟、P50(中位数)、P95、P99 延迟。

适用场景:

  • 用户交互型服务:如 Web 页面加载、API 接口调用、数据库查询。用户对响应时间敏感,高延迟直接影响用户体验。
  • 实时系统:如在线游戏、视频直播、金融交易系统,要求毫秒级响应。
  • 微服务调用链:用于识别上游服务或下游依赖的瓶颈。
校准要点:延迟 SLI 的阈值通常按百分位设定。例如,P99 延迟 < 200ms 表示 99% 的请求在 200ms 内完成。校准时应关注长尾延迟,而非平均值。
常见误区:仅使用平均延迟作为 SLI,会掩盖高百分位的性能劣化。建议至少同时监控 P50 和 P99。

3.2 错误率 SLI(Error Rate SLI)

定义:错误率 SLI 衡量请求处理失败的比率,通常以百分比(%)表示。错误可细分为 HTTP 5xx(服务端错误)、4xx(客户端错误)、业务逻辑错误、超时错误等。

适用场景:

  • 所有在线服务:任何对外提供 API 或页面的系统,都需要监控错误率。
  • 数据处理管道:如消息队列消费、ETL 任务,错误率反映数据完整性。
  • 第三方依赖集成:用于衡量上游依赖的稳定性。
错误类型 典型阈值参考 说明
HTTP 5xx < 0.1% 服务端内部错误,需立即响应
HTTP 4xx < 1% 或按业务定义 客户端错误,需区分正常业务拒绝
业务逻辑错误 < 0.5% 如订单创建失败、支付失败
超时错误 < 0.01% 通常与延迟 SLI 联动

3.3 吞吐量 SLI(Throughput SLI)

定义:吞吐量 SLI 衡量系统在单位时间内处理的请求量或数据量,常见单位有 QPS(每秒查询数)、RPS(每秒请求数)、TPS(每秒事务数)、BPS(每秒字节数)。

适用场景:

  • 容量规划:评估系统能否承载预期流量峰值。
  • 限流与降级:当吞吐量接近系统上限时触发保护机制。
  • 批处理系统:如日志处理、数据同步,关注每小时处理记录数。
注意:吞吐量 SLI 通常与延迟 SLI 呈负相关。当吞吐量接近瓶颈时,延迟会急剧上升。校准阈值时需结合两者进行联合分析。

3.4 饱和度 SLI(Saturation SLI)

定义:饱和度 SLI 衡量资源被使用的程度,反映系统距离容量极限的接近程度。常见指标包括 CPU 使用率、内存使用率、磁盘 I/O 等待时间、网络带宽利用率、连接池使用率、队列深度等。

适用场景:

  • 基础设施监控:服务器、数据库、中间件的资源使用情况。
  • 弹性伸缩:当饱和度超过阈值时触发自动扩容。
  • 故障预测:饱和度持续上升往往是性能劣化的前兆。
校准要点:饱和度阈值不应设置为 100%。例如,CPU 使用率建议阈值设为 80%,预留缓冲空间应对突发流量。队列深度建议阈值设为最大容量的 70%。

3.5 可用性 SLI(Availability SLI)

定义:可用性 SLI 衡量服务在给定时间窗口内正常运行的比率,通常以百分比(%)表示。计算公式为:可用性 = (总时间 - 不可用时间) / 总时间 × 100%。常见的可用性标准有 99.9%(三个九)、99.99%(四个九)、99.999%(五个九)。

适用场景:

  • SLA 承诺:对外向客户承诺的服务可用性等级。
  • 核心业务系统:如支付、登录、搜索等关键链路。
  • 基础设施服务:如 DNS、负载均衡、数据库主从切换。
可用性等级 年不可用时间 月不可用时间 典型场景
99.9% 8.76 小时 43.8 分钟 非关键内部系统
99.99% 52.56 分钟 4.38 分钟 面向用户的 Web 服务
99.999% 5.26 分钟 26.3 秒 金融交易、电信核心网

3.6 五种 SLI 的关系与选择

在实际可靠性评审中,这五种 SLI 并非孤立存在,而是相互关联、共同构成服务的健康画像。下图展示了它们之间的典型关系:

五种 SLI 类型关系图 服务健康状态 延迟 SLI 错误率 SLI 吞吐量 SLI 饱和度 SLI 可用性 SLI 关系说明: 延迟上升 → 错误率可能增加 吞吐量接近上限 → 饱和度升高 错误率或延迟超标 → 可用性下降

3.7 场景化选择指南

在可靠性评审中,应根据服务类型和业务目标选择合适的 SLI 组合。下表总结了不同场景下的推荐 SLI 类型:

服务类型 推荐 SLI 组合 优先级 典型阈值示例
用户前端 API 延迟 + 错误率 + 可用性 延迟 > 错误率 > 可用性 P99 延迟 < 200ms, 错误率 < 0.1%
后台批处理 吞吐量 + 错误率 + 饱和度 吞吐量 > 错误率 > 饱和度 每小时处理 > 100 万条, 错误率 < 0.5%
数据库服务 延迟 + 饱和度 + 可用性 延迟 > 饱和度 > 可用性 P99 查询延迟 < 50ms, CPU < 80%
消息队列 吞吐量 + 饱和度 + 错误率 饱和度 > 吞吐量 > 错误率 队列深度 < 最大容量 70%, 消费延迟 < 1s
CDN / 静态资源 可用性 + 延迟 + 吞吐量 可用性 > 延迟 > 吞吐量 可用性 > 99.99%, P95 延迟 < 100ms
最佳实践:每个服务至少选择 2-3 个 SLI 类型,避免单一指标带来的盲区。例如,仅监控延迟可能忽略错误率飙升,仅监控可用性可能掩盖性能劣化。