hystrix熔断
目录
一、基本知识
背景:分布式系统中经常会出现某个基础服务不可用造成整个系统不可用的情况, 这种现象被称为服务
雪崩效应。 为了应对服务雪崩, 一种常见的做法是手动服务降级,而Hystrix的出现,给我们提供了另一
种选择。
出现雪崩原因:服务调用者不可用、重试增加流量、服务提供者不可用
服务不可用场景:硬件故障、程序Bug、缓存击穿、用户大量请求
重试增加流量场景:代码重试调用、用户重复调用
hystrix熔断策略:流量阈值控制、熔断开关控制、熔断间断性尝试服务状态
二、工作过程
官方流程图:
(1)构建一个command,command 有两种模式:一种是正常的线程模式,另外一种是观察者模式。
(2)执行command 命令,执行command有四种方式:execute(以同步阻塞方式执行command的
run方法)、queue(以异步方式执行command的run方法)、observe(事件注册前执行run/construct)、
toObservable(事件注册前执行run/construct)
(3)缓存命中验证:验证当前请求是否命中缓存,如果命中缓存直接返回命中结果。
(4)熔断开关判定:打开直接进去command的回退逻辑
(5)信号量或者线程池容量判定:判断当前的command对应的请求数量是否超过最大信号量或者线程池
阈值,超过则进入异常处理逻辑fallback 。否则则执行command逻辑,并重新计算熔断值。
(6)执行command逻辑:HystrixObservableCommand.construct() 、HystrixCommand.run()
(7)计算熔断的健康状态
(8)异常回退处理
(9)返回command执行结果