主播:Elaine
今天是白话微服务第一季《服务通信》
番外篇《舱壁与熔断》
舱壁那一集播出后,有朋友问,这不就是熔断嘛。今天就来讲一讲两者的区别。
熔断侧重的是对于单一服务的失败控制。当失败比率达到一定程度,不会响应后续的请求。
舱壁侧重的是对多个资源的隔离控制,避免当某类资源的请求超限时的系统影响。
因此,两者的第一个区别是对象的多少,第二个区别是手段的差异。
非典疫情爆发的时候,相关部门会采取多种手段来达成对疫情的控制 。
一是限制对高发区的航班和高铁,避免病情漫延;
二是隔离已经或疑似病患,并排查相关接触者;
三是在有条件的地区,对患者注射疫苗。
不严谨的讲,这里的一和二就是舱壁模式,三就是熔断模式。
就技术实现来说,熔断多数是通过失败比率控制的,而隔离则有不同的方案。
比如Sentinel和Hystrix都面向高可用,但Sentinel实现是基于信号量的控制,即航班交通,而Hystrix是通过线程池隔离,即隔离疑似病患。