系统面临的问题
1. 运维
- 灾难:机房停电,网络不通
- 单个容器异常
- 中间件访问异常
2. 业务
- 流量增加:周期性增加(促销)、瞬间流量(秒杀)、异常流量(爬虫、恶意攻击)
- 业务改动变动大:新老版本,历史数据
- 业务数据规模变大:数据量增加,系统压力大,查询量较大
3. 研发
- 研发和上线流程
- 系统拆分问题:屎山代码
- 系统交互问题,相互调用出现超时、阻塞等
- 系统感知告警
稳定性解决方案
1. 运维
- 灾难:冷热备份
- 单个容器异常:多机器部署,负载均衡
- 中间件访问异常:心跳检测,慢查询告警,故障转移
2. 业务
- 流量增加:周期性增加(预知扩容)、瞬间流量(弹性扩容)、异常流量(限流和风控)
- 业务改动变动大:数据版本号
- 业务规模变大:数据归档,分库分表
3. 研发
- 研发和上线流程(code review 工具、测试覆盖、灰度发布)
- 系统拆分问题:领域拆分、核心和非核心、流量大小划分、核心业务依赖
- 系统交互问题:熔断、限流、降级、容错
- 系统感知告警:业务数据告警、系统埋点、错误和warn日志告警