前言
年后回来第一周小组周会上领导抛出了一个问题,‘有人知道 SLI SLO SLA 是什么吗?’,大家噤若寒蝉,看来大家的手里的工作没有跟这块相关的。恰好,本人最近在做(之家好UV)相关的治理工作,对这三个概念略有见解,于是简单输出了一波,由于时间限制,没有展开去讲,于是毛遂自荐在下次周会上单独分享这块知识,说干就干,收集知识点,整理文档,查阅之家 SLI 指标,与业界做对比,利用休息时间两天整理完毕!
SLI SLO SLA 是什么?
实际生活中,往往也会有一些在意的"指标":
例如:作为餐厅管理者,为量化服务指标,会关注以下核心点:
- 餐厅菜品的味道
- 上菜时间
- 上菜错误率
- 客流量
- 点单等待时间
针对这些指标,制定对应的标准(目标):
- 关于味道的客诉率小于 95%
- 上菜时间 ≤ 30 分钟
- 每月上菜错误率 < 1%
- 日均客流量 > 1000
- 顾客取号到点单平均时间
若未达到承诺标准(如超时上菜),需补偿顾客(如免单或赠送优惠券)。
类比技术服务中的概念:
- SLI(指标):接口响应时间(如上菜时间)
- SLO(目标):30 分钟内上菜、错误率 < 1%(对应 QPS 10000、错误率 1%)
- SLA(协议):若未达标则赔偿(如云服务可用性不足时补贴费用)
技术服务中的定义
SLA(服务等级协议)
关键指标:用于评估服务质量的实际表现。
SLO(服务等级目标)
SLI 的预期目标(内部管理用),通常以百分比和时间范围定义:
- 通常是一个百分比,并与一个时间范围挂钩。比如,月度、季度、年度等。通常用一连串9来度量(平均值 or 百分位)。如果脱离了时间的度量,SLO的意义就不大了。
- 90%:这意味着10%的停机时间,也就是说在过去的30天里停机了3天。
- 99%:意味着在过去30天中有1%,或者说7.2小时的停机时间。
- 99.9%:意味着0.1%,或者说43.2分钟的停机时间。
- 99.95%:意味着0.05%,或者说21.6分钟的停机时间。
- 99.99%(4个9的正常运行时间):意味着0.01%,或者说4.32分钟的停机时间。
- 99.999%(5个9的正常运行时间):意味着0.001%,或者说26秒的停机时间。
示例:
- 本月系统 99% 的实际可用性 -> 服务在 99% 的时间内是可用的
- 确保本月系统的实际可用性为 99.97%
- 95% 的请求在 200 毫秒内完成
- 98% 的请求成功处理
- 错误率低于 0.1%
- 每分钟平均QPS > 100,000/s
- 99% 访问延迟 < 500ms
- 99% 每分钟带宽 > 200 MB/s
详细说明
- SLO:由 SLI 组成,提供性能、质量、可靠性的形式化描述
- SLA:对用户的承诺(如 99.9% 正常运行时间,未达标则退款)
核心概念总结
- SLA → Service Level Agreement → 服务等级协议
- SLO → Service Level Objective → 服务等级目标
- SLI → Service Level Indicator → 服务等级指标
示例:
- SLI:请求延迟
- SLO:99% 请求 < 5ms
- SLA:若 99.9% 请求未在 5ms 内完成,退还费用
为什么需要 SLA/SLO/SLI?
大厂案例
之家 SLI 指标
APP & WEB 指标
| 序号 | 服务分类 | SLO阈值目标 | SLI指标 | 指标口径 | SLI告警计算口径 | TP99计算逻辑 |
|---|---|---|---|---|---|---|
| 1 | App层 | 应用可用性 ≤0.08% | App 闪退率 | 闪退次数 / App启动次数 | 同左 | 正序 |
| 2 | 流畅度 ≤0.01% | 严重卡顿率 | 卡顿时间总和 / 页面总时长 | 同左 | 正序 | |
| 3 | 页面秒开率 ≥98% | App 页面秒开率 | 1秒内展示次数 / 总展示次数 | 同左 | 倒序 | |
| 4 | Web层 | 页面秒开率 ≥90% | Web 页面秒开率 | 白屏时间 ≤1800ms 次数 / 总展示次数 | 同左 | 倒序 |
| 5 | 页面正确率 ≥99.9% | Web 页面正确率 | 非4xx&5xx 请求次数 / 总请求次数 | 同左 | 倒序 |