6.1.2 稳定性治理的思想
关于稳定性治理的方法,答案和途径都不尽相同。那什么是可遵循的稳定性治理的思想呢?我们可以从可用性计算公式(Availability Estimate)进行挖掘:
AvailabilityEstimate=MTBF/(MTBF+MTTR)
其中,MTBF:the1Mean1Time1Between1Failure(平均故障间隔时间),MTTR:the Mean Time To Recover(平均故障修复时间)
这里涉及两个变量:故障概率、故障时长。通过增大MTBF、减小MTTR,可以提高系统的高可用性。主要包含减少故障发生概率、减少故障恢复时间、制造故障发生概率(可控的)三个方法。为什么会需要人为制造故障发生概率?因为故障发生相应频次较低,没有办法很好地提前发现故障,所以需要制造故障。减少故障发生概率是通过一些稳定性原则进行系统设计及调优来改善的, 制造故障发生概率是通过一系列的容灾演练、全链路压测、混沌工程等检查系统的自愈能力及稳定性,并将发现的潜在风险进行治理。
________________________________________________________
9 ISO/IEC 25010:2011, Systems and software engineering -- Systems and software Quality Requirements and Evaluation (SQuaRE)
-- System and software quality models,[S]
图:故障恢复公式
我们可以推导及设计一些对应的稳定性原则,用于设计客户核心系统架构及优化其稳定性。
N+1原则:系统中的每个组件都应做到没有单点故障。
依赖识别简化原则: 尽可能单元化每个组件,减少各系统的依赖性。
回滚原则:确保系统可以向前兼容,在系统升级时应能有办法回滚版本。
隔离原则:应该提供控制具体功能是否可用的配置,在系统出现故障时能够快速下线功能。
异地多活原则:考虑在多地实施数据中心进行多活,至少在一个机房断电的情况下系统依然可用。
自我保护原则:遇到外部恶意输入时,有一定的防错能力,遇到大促时可以考虑少流血,牺牲一部分保护另外一部分。例如:限流,降级等。
水平扩展原则:系统架构做到能水平扩展,才能有效避免瓶颈问题。