当我们遇到线上问题时,大体思路不是立马去定位问题原因,而是怎么去恢复系统到正常状态,使损失最小化.
以下是线上问题的一些预防或者解决方式(包含不仅限于)
自动化测试
周期性的进行自动化测试
日常巡检
可以是人工或者系统自身进行检查
值班
出问题有相应的人可以及时处理
故障自愈系统
其实对于一个特定的问题,可以把人操作转为脚本,触发相应故障时候进行自愈
扩容
针对容量不够
重启
有些不是必现的bug,重启能快速的恢复正常使用
回滚
回到上一个稳定版本
降级
比如数据库访问不了了,那就使用缓存
熔断
如果访问外部服务失败太多,那就暂时不访问了
限流
限制系统间的访问频率
隔离
把影响最小化
备份/失效转移
拿备份提供服务
告警
异常的话进行告警
监控
增强系统的可观测性
复盘
进行问题的总结和以后预防
测试
发布之前进行充分的测试,包括单元测试,集成测试