3、SLO制定方法论:基于用户旅程的SLO设计、错误预算的引入、SLO目标值的设定原则
SLO(Service Level Objective,服务等级目标)的制定并非简单的“拍脑袋”定一个数字,而是需要一套严谨的方法论。本章将围绕“用户旅程”这一核心视角,系统讲解如何设计有意义的SLO、引入错误预算进行风险管理,以及设定“三个九”、“四个九”等目标值的底层原则。
3.1 基于用户旅程的SLO设计
传统的SLO制定往往从基础设施或中间件指标出发(如CPU使用率、磁盘IO),这些指标虽然易于采集,但与用户的真实体验存在鸿沟。正确的做法是:从用户旅程(User Journey)出发,反向推导出关键的服务指标。
用户旅程是指用户为完成一个业务目标所经历的一系列步骤。例如,一个“电商下单”旅程可能包含:浏览商品 → 加入购物车 → 提交订单 → 支付 → 查看订单状态。每个步骤都对应一个或多个服务交互点。
设计步骤如下:
- 绘制用户旅程地图:识别核心用户场景(登录、搜索、下单、支付等)。
- 识别关键服务交互:每个旅程步骤背后依赖哪些微服务或API(如“提交订单”依赖订单服务、库存服务、优惠券服务)。
- 定义体验指标:将服务交互转化为可测量的SLI(Service Level Indicator),如“下单API的P95延迟”、“支付成功率”、“搜索结果返回时间”。
- 设定SLO目标:基于业务容忍度,为每个SLI设定目标值。
以下是一个基于用户旅程的SLO设计示例(电商场景):
| 用户旅程步骤 | 依赖服务 | SLI(服务等级指标) | SLO(服务等级目标) |
|---|---|---|---|
| 搜索商品 | 搜索服务、商品服务 | 搜索请求P95延迟 | < 500ms,99.9% 可用 |
| 查看商品详情 | 商品服务、图片服务 | 详情页加载成功率 | 99.99% 成功 |
| 提交订单 | 订单服务、库存服务 | 下单API P99延迟 | < 2s,99.95% 可用 |
| 支付 | 支付网关、账户服务 | 支付成功率 | 99.99% 成功 |
| 查看订单状态 | 订单查询服务 | 查询API可用性 | 99.9% 可用 |
下图展示了从用户旅程到SLO的映射关系:
3.2 错误预算的引入
错误预算(Error Budget)是Google SRE实践中提出的核心概念,它量化了服务在SLO允许范围内的“可犯错空间”。错误预算 = 1 - SLO。例如,如果SLO是99.9%,那么错误预算就是0.1%(即每月约43分钟的可停机时间)。
错误预算的核心价值在于:平衡稳定性与创新速度。当错误预算充足时,团队可以更自信地进行功能发布、架构变更;当错误预算消耗过快时,团队应暂停高风险变更,优先投入稳定性工作。
错误预算的计算与消耗机制:
- 预算周期:通常以30天为滚动窗口。
- 消耗来源:所有不符合SLO的请求(延迟过高、错误、超时等)。
- 消耗速率:错误预算消耗率 = (总不良事件数 / 总请求数) × 100%。
- 告警阈值:当消耗率达到一定比例(如70%、90%)时触发告警。
| SLO目标 | 错误预算(30天) | 典型应用场景 |
|---|---|---|
| 99.9%(三个九) | 约43分钟 | 内部工具、非关键业务 |
| 99.95% | 约21.6分钟 | 核心业务API、用户量中等 |
| 99.99%(四个九) | 约4.3分钟 | 支付、金融交易、高可用系统 |
| 99.999%(五个九) | 约26秒 | 电信、基础设施核心 |
下图展示了错误预算的消耗与决策流程:
3.3 SLO目标值的设定原则
设定SLO目标值(如“三个九”、“四个九”)时,不能盲目追求高可用性,而应遵循以下原则:
3.3.1 原则一:以用户容忍度为上限
SLO目标不应高于用户实际能容忍的故障时间。例如,一个内部报表系统,用户能接受每月停机1小时,那么设定99.9%(月停机43分钟)是合理的,设定99.99%(月停机4.3分钟)则过度设计,徒增成本。
3.3.2 原则二:以业务成本为下限
每提升一个“九”,基础设施和运维成本通常呈指数级增长。从99.9%提升到99.99%,可能需要引入多活架构、异地容灾、全链路监控等,成本可能增加3-5倍。SLO目标必须与业务收益匹配。
3.3.3 原则三:分层设定,避免一刀切
不同服务、不同API应有不同的SLO。核心支付链路可以设定99.99%,而商品推荐服务可以设定99.9%。分层设定可以更合理地分配运维资源。
3.3.4 原则四:SLO是承诺,不是目标
SLO是向用户(包括内部用户)做出的服务承诺,一旦设定,就需要有相应的监控、告警和治理机制来保障。如果无法达成,应主动调整SLO,而不是隐瞒或忽视。
以下表格总结了不同“九”的适用场景与成本特征:
| 可用性等级 | 年停机时间 | 典型场景 | 成本特征 |
|---|---|---|---|
| 99%(两个九) | 87.6小时 | 开发环境、非关键内部工具 | 低,单机部署即可 |
| 99.9%(三个九) | 8.76小时 | 生产环境非核心服务 | 中等,需要冗余和监控 |
| 99.99%(四个九) | 52.56分钟 | 核心业务、支付、用户认证 | 高,需要多活、自动故障转移 |
| 99.999%(五个九) | 5.26分钟 | 金融核心、电信、基础设施 | 极高,需要全栈冗余和混沌工程 |
下图展示了SLO目标值与成本、用户满意度的关系:
3.4 小结
本章介绍了SLO制定的三大核心方法论:基于用户旅程的设计确保了SLO与用户体验对齐;错误预算的引入为稳定性与创新提供了量化决策依据;目标值设定原则(用户容忍度、业务成本、分层设定、承诺属性)帮助团队避免过度设计或保障不足。在实际工作中,建议从核心用户旅程开始,先设定1-2个关键SLO,逐步迭代完善。