稳定性「三十六计」实战和背后的逻辑
背景
不同于《编写代码的「八荣八耻」》,《稳定性「三十六计」》是应用于设计阶段的非手脚架方式的标准化。
在实际工作中,通常会提倡给新人机会,让他们自己去设计系统。这时候如果没有一种标准化的check机制,会影响整个系统的质量。《稳定性「三十六计」》在实际项目中,我们作为设计阶段的checklist来用。实现了从有重大变更允许出小错到架构演进过程中周可用性不低于3个9。
同时,我们是一个做容器化的团队。不断实践和总结好的方法并且推广这些方法,让所有的部门都更标准化的设计和开发更利于容器发挥自身的优势,为打造更稳定、更易用、更省钱的HULK系统打下基础。
WHAT
下面是我们容器的剩余资源历史记录功能在设计阶段的稳定性「三十六计」checklist。
WHY
设计有很多好的原则:避免过渡设计、防止破窗……但是对于新人来说落地困难。稳定性「三十六计」给出了具体的设计方法,使用这种方法可以达到下面的效果:
少就是多
少就是多是稳定性的重要原则。稳定性「三十六计」里通过消除临时、链路精简、负代码行、最小API、避免重复、拒绝环路六项更可量化的措施来保证。
可扩展性
无状态化、幂等设计、读写分离、容量冗余四个方法给负载均衡、避免单点提供了解决方案,使得系统可X轴、Y轴扩展。
内聚解耦
配额管控、严格准入两个方法实际上将一个功能拆分成了两个阶段。先check再do。异步通信将一个过程拆分成两个过程,降低了两个过程之间的相互作用。
防止雪崩
超流熔断、禁止批量、超时重试、分级管理、快速失败五个方法有效避免问题逻辑对其他逻辑引起的干扰,防止问题扩大。
提高性能
缓存为王、无锁并发、梯级存查、流量缓存、本地代理、避免串联六个方法也是业务比较流行的提高性能的错误。
故障运维
兜底策略、先验确保、前置加载三个方法将问题控制在前面的阶段。开关上线、灰度升级、应急预案、支持回滚四个方法在产生问题时给出了有效的应急解决措施。
对于一些新人来说,划分边界和领域是相对困难的事情。稳定性「三十六计」提供了设计思路。同时,我们不重复造轮子,设计时引用了很多基础设施时,很多稳定性「三十六计」的内容是通过第三方来保证的,而这个checklist有效的促使设计者进行反向设计,使用的时候也去了解其原理。
HOW
请参考《稳定性「三十六计」》系列文章。