前言
说到系统稳定性,不知道大家会想起什么?我想大多数人会觉得这个词挺虚的,不知道系统稳定性指的是什么。
一年前的我看到这个词,也是类似于这样的感受,大概只知道要消除单点、做好监控报警,但却并没有一个体系化的方法论。
经过一段时间的摸索,我对系统稳定性有了较为体系化的认识,于是迫不及待地希望和大家一起分享。所以今天,就让我跟大家简单聊聊系统稳定性建设这个话题吧!
何谓稳定性?
系统稳定性,从字面上来看,就是让系统尽可能稳定,不要出问题。 但业务是变化的,系统肯定也是一直变化的,有可能新加了个功能就把系统搞挂了,也有可能突然业务流量暴增把系统搞挂了。所以,要保障系统稳定性可谓非常之难。但即使再难,也还是得去做,但到底怎么做呢?
我们要保障系统稳定性,那就需要知道哪些因素可能会造成系统不稳定。我自己来了一个头脑风暴,把所有可能造成系统不稳定的因素整理一下,下面是我梳理的会造成系统不稳定的部分因素:
- 未测试需求直接上线
- 上线的需求产品不知道
- 上线的新需求有 bug
- 频繁发布需求
- 发布紧急需求
- 上线后没有线上验证
- 系统设计方案存在缺陷
- 系统代码实现存在缺陷
- 漏测了某个功能
- 上线时操作失误
- 下游服务挂了
- 网络中断导致调用失败
- 上游调用流量突增,冲垮服务
- 应用服务器内存溢出 OOM
- 应用服务器 CPU 100%
- 数据库主从延迟了
- 数据库主库挂了
- Kafka 消息挤压了
- Redis 响应缓慢