熔断保护机制
-
熔断在本质上是一个过载保护机制。这一概念来源于电子工程中的断路器,可能你曾经被这个东西的“跳闸”保护过。在互联网系统中的熔断机制是指:当下游服务因访问压力过大而响应变慢或失败,上游服务为了保护自己以及系统整体的可用性,可以暂时切断对下游服务的调用。做熔断的思路大体上就是:一个中心思想,分四步走。
这四步走分别是:定义一个识别是否处于“不可用”状态的策略;切断联系;定义一个识别是否处于“可用”状态的策略,并尝试探测;重新恢复正常。分布式系统被建立在一个并不是100%可靠的网络上,因此我们不能将偶发的瞬时异常等同于系统“不可用”。由此我们需要引入一个时间窗口的概念,这个时间窗口用来“放宽”判定“不可用”的区间,也意味着多给了系统几次证明自己“可用”机会。但是,如果系统还是在这个时间窗口内达到了你定义“不可用”标准,那么我们就要“断臂求生”了。
切断联系是需要尽可能的“果断”,既然已经明确了对方“不可用”,那么干脆就默认“失败”,避免做无用功,也顺带能缓解对方的压力。定义一个识别是否处于“可用”状态的策略,并努力尝试探测:在切断联系之后,功能的完整性一定会受影响,所以还是需要尽快从中恢复回来,以达到提供完整的服务的能力。这种事情肯定不能人为去干预,那么及时性必然会受到影响。那如何才能够自动的识别依赖系统是否“可用”呢?这也需要你来定义一个策略。
重新恢复正常:一旦通过了衡量是否“可用”的验证,整个系统就恢复到了“正常”状态,此时需要重新开启识别“不可用”的策略。就这样,系统会形成一个循环。
说到底,熔断只是一个保护壳,会在周围出现异常的时候保全自身。但是从长远来看平时定期做好压力测试才能更好的防范于未然,降低触发熔断的次数。
西南地区IT社群(QQ)
- 云南
- 【昆明网页设计交流吧】243627302
- 【昆明nodejs交流吧】 243626749
- 【VUE】838405306
- 【云南程序员总群】343606807
- 【昆明UI设计】104031254
- 【云南软件外包】15547313
- 贵州
- 【PHP/java源码/站长交流群】55692114
- 四川
- 【成都Java/JavaWeb交流】86669225
- 【vaScript+PHP+MySql】116270060
- 【UI设计/设计交流学习群】135794928
- 重庆
- 【诺基亚 JAVA游戏博物馆】 559479780
- 【PHP,Java,Python,C++接单】 442103442
- 西藏