一、稳定性分析概述

做系统架构这么多年,我越来越觉得「稳定性」这个词被说烂了。很多人一开口就是「高可用」「容灾」「多活」,但真要问他:你的系统到底稳不稳? 往往答不上来。

说白了,稳定性不是靠口号喊出来的。它是一套可度量、可控制、可恢复的工程能力。今天这一章,我们就先把地基打牢。

1.1 什么是系统稳定性

先给个定义:系统稳定性,是指系统在持续运行过程中,能够正确、及时地处理请求,并在异常发生时具备自我恢复的能力。

注意两个关键词——「正确」和「及时」。光正确不够,响应慢了也算不稳定。光及时也不行,数据错了更糟糕。

我遇到过不少团队,把「没宕机」等同于「稳定」。其实不然。你想想看,一个接口虽然没挂,但每次响应都要 5 秒,用户早就跑了。这种「假稳定」比真宕机更可怕。

核心观点: 稳定性 ≠ 不宕机。稳定性 = 正确性 + 及时性 + 可恢复性。

1.2 稳定性分析的价值

为什么要花精力做稳定性分析?三个字:省成本。

  • 省运维成本: 一个稳定的系统,半夜不需要人起来救火。
  • 省业务成本: 每宕机 1 分钟,可能损失几十万甚至上百万。
  • 省信任成本: 用户对产品的信任,建立起来很慢,崩塌却很快。

我记得有一次做电商大促压测,发现一个隐藏的慢查询。当时 DBA 说「问题不大,线上流量没那么高」。结果双十一当天,这个查询直接把主库打挂了。恢复用了 40 分钟,损失了将近 200 万的 GMV。从那以后,我养成了一个习惯——任何线上问题,都要追问一句:如果流量翻 10 倍,它会不会变成事故?

个人经验: 稳定性分析不是「锦上添花」,而是「雪中送炭」。越早做,成本越低。

1.3 稳定性分析的三大支柱

稳定性分析不是玄学。它有三个实实在在的支柱:可观测性、可控制性、可恢复性。这三者缺一不可。

1.3.1 可观测性

可观测性,就是你能「看见」系统在干什么。没有可观测性,稳定性分析就是盲人摸象。

它包含三个层面:

层面 说明 常见工具
日志 记录系统发生了什么 ELK、Loki
指标 量化系统的状态 Prometheus、Grafana
链路追踪 还原请求的完整路径 Jaeger、Zipkin

我见过最典型的反面教材:线上出了故障,运维说「CPU 飙高了」,开发说「不知道哪个接口引起的」。为什么?因为没有链路追踪。你只能看到症状,看不到病因。

避坑指南: 我曾经接手过一个老项目,日志全打在一个文件里,每天几十 GB。查问题就像大海捞针。后来我强制要求:所有日志必须带 traceId,必须按模块分文件。这个改动,让故障定位时间从小时级降到了分钟级。

1.3.2 可控制性

光能看见还不够,你还得能「管住」它。可控制性,就是系统在异常时,你能及时干预。

常见的控制手段包括:

  • 限流: 防止流量冲垮系统
  • 降级: 牺牲非核心功能,保住核心功能
  • 熔断: 快速失败,防止雪崩
  • 动态配置: 不改代码,调整行为

举个例子。有一次线上出现慢 SQL,数据库连接池被占满。如果当时有熔断机制,就能快速切断异常流量,保住正常请求。可惜没有。结果就是——一个慢查询拖垮了整个服务。

关键原则: 可控制性不是「出了事再想办法」,而是「出事前就准备好预案」。

1.3.3 可恢复性

最后,也是最容易被忽视的——可恢复性。系统一定会出问题,关键是出了问题能不能快速恢复。

可恢复性包含:

  1. 数据恢复: 备份是否完整?恢复速度够不够快?
  2. 服务恢复: 重启后能否自动回归正常状态?
  3. 流量恢复: 切流后,新节点能否承接流量?

我记得有一次做容灾演练,模拟机房断电。结果发现,虽然数据备份是完整的,但恢复脚本有 bug,花了 3 个小时才把服务拉起来。这 3 个小时,就是可恢复性没做好的代价。

我的习惯: 每季度至少做一次「混沌工程」演练。故意搞破坏,看看系统能不能自己缓过来。只有亲手验证过的恢复流程,才是可靠的。

1.4 三大支柱的关系

这三者不是孤立的。它们的关系可以用一张图来概括:

稳定性分析三大支柱关系图 系统稳定性 可观测性 可控制性 可恢复性 说明: • 可观测性:让你「看见」问题 • 可控制性:让你「管住」问题 • 可恢复性:让你「修复」问题 三者形成闭环:观测 → 控制 → 恢复 → 再观测

你看,这三个支柱形成了一个闭环:先观测到问题,再通过控制手段干预,最后恢复系统正常状态。恢复之后,继续观测,看看干预是否有效。这个循环转得越快,系统就越稳定。

1.5 本章小结

这一章我们聊了三个核心问题:

  • 什么是稳定性: 正确 + 及时 + 可恢复
  • 为什么做稳定性分析: 省成本、保业务、赢信任
  • 三大支柱是什么: 可观测性、可控制性、可恢复性

嗯,地基打好了。后面的章节,我们会逐一深入每个支柱,看看具体怎么落地。记住一句话:稳定性不是结果,是过程。