熔断的意义

游服务快速失败(Fail Fast),并保护下游服务。

详细解释一下,假设上游服务是A,下游服务是B,A调用B,B发生故障,开启熔断:

 

对于上游服务A:请求到A后直接快速返回(返回值可以是默认值,或者通过一种后背(Fallback)方案获取的值),快速失败,不再发送到B。 避免因为B故障,导致请求线程持续等待,进而导致线程池线程和CPU资源耗尽,进而导致A无响应甚至整条调用链故障。

 

对于下游服务B:熔断后,请求被A拦截,不再发送到B,B压力得到缓解,避免了仍旧存活的B被压垮,B得到了保护。

熔断生命周期包括三个状态:关闭,半开启,开启。

 

关闭状态->开启状态,A调用B请求失败次数在设定时间内达到阈值,开启熔断

 

开启状态->半开启状态,熔断开启后,熔断器根据设定时间间隔定期自动进入半开启状态

 

半开启状态->关闭状态(或开启状态),半开启状态下会从A发送少量请求到B来试探B服务是否能正常提供服务,如果请求成功率达到阈值就关闭熔断,否则就回到熔断开启状态

 

你可能感兴趣的:(java,#,微服务)