Hystrix是Netflix开源的一款容错框架。
Hystrix [hɪst'rɪks],中文含义是豪猪,因其背上长满棘刺,从而拥有了自我保护的能力。
Hystrix工作原理图
(图来源:https://github.com/Netflix/Hystrix/wiki/How-it-Works)
说明:
1.构建一个HystrixCommand或者HystrixObservableCommand对象,将请求包装到Command对象中。
2.执行命令。
3.判断当前请求是否有缓存,如果在缓存中就直接返回缓存的内容。
4.判断熔断器是否打开,如果开启,则跳到第8步。
5.判断线程池/队列/信号量是否已满,如果已满,则跳到第8步。
6.执行HystrixObservableCommand.construct()/HystrixCommand.run(),如果执行失败或超时,跳到第8步;否则,跳到第9步;
7.统计熔断器监控指标。
8.走Fallback备用逻辑。
9.返回成功的响应。
此外第5步线程池/队列/信号量已满时,还会执行第7步逻辑,更新熔断器统计信息,而第6步无论成功与否,都会更新熔断器统计信息。
详细说明
1.构建一个HystrixCommand或者HystrixObservableCommand对象,将请求包装到Command对象中。
// 创建HystrixCommand对象
HystrixCommand command = new HystrixCommand(arg1, arg2);
// 创建HystrixObservableCommand
HystrixObservableCommand command = new HystrixObservab