简单系统质量 —— SLO(二)
一、服务水平目标(SLO)
SLO: Service Level Objective
1.1 基本概念
定义
指服务可靠性的目标水平,指定了服务所提供功能的一种期望状态。
意义
由于 SLO 是做出以数据为依据的可靠性决策的关键
- 它们是SRE实践的核心。
- 服务提供者用它来指定系统的预期状态;
- 开发人员编写代码来实现;
- 客户依赖于 SLO 进行商业判断。
示例
- 每分钟慢查询数量 < 10
- 99% 访问延迟 < 100ms
- 99% 每分QPS > 10k/s
SLO 几个最佳实践
- 明确指定计算的时间窗口
- 使用一致的时间窗口(例如:5min滚动窗口、15min滚动窗口、1h滚动窗口、24h级滚动窗口)
- 需要有免责条款(例如:95%的慢查询要达到SLO、95%的访问延迟要达到SLO)
1.2 遵循原则
- 测量系统当前状态
- 设置预期(expectations),而不是保证(guarantees)
- 初期的 SLO 不适合作为服务质量的强化工具
- 改进 SLO
- 设置更低的响应时间、更改的吞吐量等
- 保持一定的安全缓冲
- 内部用的 SLO 要高于对外宣称的 SLO
- 不要超额完成
- 定期的 downtime 来使 SLO 不超额完成
设置SLO时的目标依赖于系统的不同状态(conditions),根据不同状态设置不同的SLO,
1.3 SLO 的收益是什么?
对于客户而言
- 是可预期的服务质量,可以简化客户端的系统设计
对于服务提供者而言
- 可预期的服务质量
- 更好的取舍成本/收益
- 更好的风险控制(当资源受限的时候)
- 故障时更快的反应,采取正确措施
1.4 SLO 有哪些特性?
- SLO 是用基于SLI的
- 指定了服务所提供功能的一种期望状态;
- SLO 是一种工具,可帮助您确定要优先处理的工程工作;
- SLO 为服务的客户设置了目标可靠性级别。
1.5 如何保证能够达到目标呢?
需要一个监控系统
- 监控/测量 SLIs
- 对比检测到的 SLIs 值是否达到目标
- 如果需要,修证目标或者修正系统以满足目标需要
- 实施目标的修改或者系统的修改
该监控系统需要重复的执行以上动作,以形成一个标准的反馈环路,不断的衡量和改进 SLO 以及服务本身。
简单系统质量 —— SLO(二)