雪崩
在服务调用过程中,某一个服务突然响应慢,则会导致整个链路上的服务响应都会变慢,从而导致整条链路的雪崩。
第一阶段:
Service A 流量暴增。流量顺着调用链路传递到 Service C, 最终导致 C 响应越来越慢
第二阶段:
Service A、B 开始受到 Service C 的影响,响应变得越来越慢。
第三阶段:
因为Service A、B、C 响应时间变慢,但是请求数不变,最终 A、B、C 不堪重负,纷纷崩溃。
熔断降级
熔断就是为了解决雪崩问题存在。
如果,我们在第一阶段,发现 Service C 的响应时间变长后,就不去请求 C,而是选择快速返回结果,则不会对 A、B 造成影响。
我们对 Service C 做了熔断降级,从而确保了 Service A、Service B 服务的正常运行。
熔断基本流程
以下为 sentinel 1.6.3 版本的熔断流程
hystrix 和 sentinel 熔断的流程都大差不差。
hystrix 会在熔断器开启 n 秒 后进入半开闭状态,在半开闭状态中会允许一个请求进入,如果该请求成功,则关闭熔断器,否则再次开启熔断器。
hystrix 熔断器的转换如下所示: