08-分布式架构设计四(熔断机制)
xiangliheart
xiangliheart
发布于 2022-02-10 / 13 阅读 / 0 评论 / 0 点赞

08-分布式架构设计四(熔断机制)

熔断机制

为了简单高效地理解什么是熔断机制,下面举两个例子进行形象的说明。

例1:在股市中有一个熔断机制,当天股市下跌5%时触发第一次熔断,暂停交易15分钟,让广大股票交易者冷静一下,15分钟之后恢复交易,如果股市继续下跌,达到10%则触发第二次熔断,全天不允许再交易,只能等第二天继续交易。这就是股市的熔断机制,是一种保护措施。

例2:家中的保险丝或空气开关,当电压过高或电路发生短路时会自动熔断或跳闸,以保护家中的电器。

微服务架构中的熔断机制也是一种保护措施,避免服务出现雪崩问题。

微服务雪崩现象如图3-20所示,服务A、B依赖服务C,服务C依赖服务D,服务D依赖服务E,当服务E发生故障之后就会导致服务D的请求不断积压,直至服务D发生故障。服务D发生故障之后又会导致服务 C的压力过大,服务C宕机,以此类推,整个微服务都会发生故障,从而引起雪崩问题(形容系统中一个微小的问题,也可能会引发大面积的系统故障)。

图3-20 微服务雪崩现象

微服务熔断机制如图3-21所示,当服务D多次调用服务E发生超时,并且超时次数超过设定的阈值时,如30秒内超时了10次则触发熔断机制,将服务D与服务E之间的链路熔断(开启断路器),服务D不再真实地向服务E发送请求,而是直接返回一个预先设置好的应答内容 E',如“服务繁忙,请稍后再试”,从而保证整个交易链路依然可用,不会因为请求积压引发级联故障。

图3-21 微服务熔断机制

微服务断路器半开启和关闭状态分别如图3-22和图3-23所示。服务 E访问超时,可能是由于宕机、网络不稳定、服务器性能下降等原因造成的,通过人为干预或积压任务消化之后就会恢复,此时服务D、E之间的断路器会进入半开启状态(图3-22)。后续有少量的请求(一般是 1~2个真实的请求)到达服务E,如果服务E能够正常应答,则断路器变为关闭状态(图3-23),这时所有的服务请求均可以正常到达服务E。

图3-22 微服务断路器半开启状态

图3-23 微服务断路器关闭状态

这就是通过断路器的开启、半开启、关闭状态的转换,从而使微服务具有了自动保护、自动恢复的能力。

断路器组件主要有Hystrix、Sentinel等,目前阿里巴巴的Sentinel组件发展势头较好。Sentinel还具有流量管理、监控、可视化管理等功能,具体细节这里不再深入。


评论