1. 稳定性概述:什么是生产环境稳定性、稳定性保障的核心理念、SLA/SLO/SLI指标定义、稳定性成熟度模型
1.1 到底什么是生产环境稳定性?
先问个问题:你遇到过凌晨三点被电话吵醒的情况吗?
我记得刚做运维那会儿,最怕的就是半夜手机响。一接起来,那边说「系统挂了」。你慌慌张张打开电脑,发现数据库连接池爆了,CPU 跑满,用户全在骂娘。嗯,那种感觉,做过运维的都懂。
生产环境稳定性,说白了就是:系统能不能持续、正确地提供服务。不是偶尔能跑,而是天天能跑;不是大部分时间能用,而是用户需要的时候,它就在那儿。
我在项目中遇到过一种情况:系统平时跑得挺好,一到双十一就崩。你说它稳定吗?平时稳定,关键时候掉链子,那就不叫稳定。真正的稳定性,是在各种压力下都能扛住。
1.2 稳定性保障的核心理念
做稳定性保障,不是靠运气。我见过很多团队,出了故障就加机器,加了机器又出故障,陷入死循环。为什么会这样?因为没抓住核心理念。
我个人习惯把稳定性保障分成四个层次:
- 可观测性:你得先知道系统在干什么。没有监控,就像闭着眼睛开车。
- 容错设计:系统一定会出问题,关键是怎么优雅地失败。我曾经在项目中因为一个缓存雪崩,导致整个服务链崩溃。从那以后,我所有系统都加了熔断和降级。
- 自动化恢复:出了故障,能不能自动修?人工处理太慢了,而且容易出错。
- 持续改进:每次故障都是学习机会。我建议团队每次复盘都要问三个问题:为什么会发生?怎么发现的?怎么避免再发生?
1.3 SLA / SLO / SLI 指标定义
聊稳定性,绕不开这三个字母。很多新人容易搞混,我简单说说。
SLI(Service Level Indicator):你拿什么来衡量?比如请求延迟、错误率、吞吐量。这是最底层的原始数据。
SLO(Service Level Objective):你希望达到什么目标?比如「99.9% 的请求延迟小于 200ms」。这是你给自己定的标准。
SLA(Service Level Agreement):你跟用户签的合同。比如「如果可用性低于 99.99%,赔你钱」。这是对外承诺。
我见过最坑的情况是什么?团队把 SLO 定得比 SLA 还高。结果呢?天天报警,天天加班,用户还不满意。说白了,SLO 要留余量,别把自己逼死。
| 指标 | 定义 | 示例 |
|---|---|---|
| SLI | 实际测量的指标 | 请求延迟 P99 = 150ms |
| SLO | 内部目标 | P99 延迟 ≤ 200ms,99.9% 时间达标 |
| SLA | 对外承诺 | 可用性 ≥ 99.99%,否则赔偿 |
1.4 稳定性成熟度模型
每个团队的稳定性水平不一样。我习惯用一个成熟度模型来评估:
- L1 - 救火阶段:出了故障才处理,没有预防措施。说白了就是「哪里着火灭哪里」。
- L2 - 被动响应:有监控了,但只能事后发现。我见过很多团队卡在这一层。
- L3 - 主动预防:能提前发现风险,比如容量规划、压测。这个阶段开始有「预判」能力。
- L4 - 自动化运维:故障自动发现、自动恢复。我目前在带的团队就在往这个方向走。
- L5 - 智能运维:用 AI 预测故障,自动优化。嗯,这个还比较理想化。
你想想看,你的团队现在在哪个阶段?我建议先别急着跳级,一步一步来。从 L1 到 L2,先把监控做好;从 L2 到 L3,开始做压测和容量规划。
1.5 本章知识体系
下面这张图,是我自己总结的稳定性保障知识体系。你可以把它当成一张地图,后面每章都会对应到其中的某个部分。
这张图把稳定性保障拆成了四个核心方向。每个方向下面又有具体的实践手段。后面我们会一个一个展开讲。
- 稳定性 = 持续 + 正确地提供服务
- 核心理念:可观测性、容错设计、自动化恢复、持续改进
- SLA/SLO/SLI 是衡量稳定性的关键指标,要合理设定
- 成熟度模型帮你评估当前水平,找到改进方向
嗯,这一章就到这里。内容不多,但都是基础。后面每一章都会围绕这张图展开,把每个点讲透。