Hystrix执行流程
- 每次调用创建一个新的HystrixCommand,把依赖调用封装在run()方法中
- 执行execute()/queue做同步或异步调用
- 判断熔断器(circuit-breaker)是否打开,如果打开则执行fallback进行降级策略,如果关闭继续执行
- 判断线程池/队列/信号量是否跑满,如果跑满执行fallback进行降级策略,否则继续后续步骤
- 调用HystrixCommand的run方法,运行依赖逻辑,如果逻辑调用超时,则执行fallback逻辑
- 判断逻辑是否调用成功,如果调用成功,则返回调用结果;如果调用出错,则执行fallback逻辑
- 计算熔断器状态,所有的运行状态(成功、失败、拒绝、超时)上报给熔断器,用于统计从而判断熔断器状态
有四种情况将触发fallback逻辑
- run()方法抛出非HystrixBadRequestException异常
- run()方法调用超时
- 熔断器开启拦截调用
- 线程池/队列/信号量是否跑满
参考文献