⚠️
- 在Ribbon-consumer上通过@EnableCircuitBreaker或者使用@SpringCloudApplication一步到位。
- 用于实现请求者与行为实现者的解耦
- execute 同步执行
- queue 异步执行
- observer 返回Hot Observable(不管是否有订阅者,直接发布)
- toObservable() 返回Cold Observable(等到有订阅者才发布事件)
- 断路器打开:Hystrix不会执行命令,跳转到fallback处理(【8】)
- 断路器关闭:检查是否有可用资源执行命令(【5】)
- 占满:跳转到fallback处理逻辑【8】
⚠️:这里的线程池是每个依赖服务隔离的专有线程池,不是容器的线程池。
- HystrixCommand.run():返回单一结果,或者抛出异常
- HystrixObservableCommand.construct():返回一个Observable对象发射多个结果,或者发送错误通知onError
- run()或者construct()超时,转到【8】
- 断路器统计信息,根据“成功”、“失败”、“拒绝”、“超时”等信息,断路器会决定是否对某个依赖服务打开断路器进行熔断,直到恢复期结束。等到恢复期结束,再次判断是否到达健康指标,否则再次熔断。
- 【4】命令处于熔断状态,断路器打开
- 【5】当前命令的线程池、请求队列、信号量被占满
- 【6】construct()或run()抛出异常的时候
- 成功执行Hystrix命令后,处理结果直接返回或者返回Observable对象
- Docker用于实现进程的隔离,Hystrix用于实现依赖服务的线程池隔离
- extends方法:重写getFallback方法
- @HystrixCommand方法:添加fallbackMethod参数
- ignoreExceptions参数:忽略制定的异常,不会出发fallback逻辑
- 在fallback方法参数中加入Throwable e,可以在fallback中实现获取抛出的异常内容。



