Hystrix内部存在一套精细、高效和简洁的流程,该流程为实现hystrix的服务降级、故障隔离、访问限流和对被依赖服务运行信息的维护奠定了坚实的基础。
Hystrix整体工作流程
hystrix整个工作流程涉及到熔断器、缓冲、线程池等组件。这些组件分别实现了故障隔离、访问合并、服务降级和访问限流等功能,正是这些组件高效密切的配合确保了服务的稳定运行。
下面是hystrix的整体工作流程图:
整个流程可以大致归纳为如下几个步骤:
- 创建HystrixCommand或则HystrixObservableCommand对象
- 调用HystrixCommand或则HystrixObservableCommand方法执行Command
- 根据依赖调用的结果缓存情况进行相应的处理
- 根据该类依赖请求熔断器的打开状态进行相应的处理
- 根据该类依赖请求的总量进行相应的处理
- 执行对外部依赖的请求逻辑
- 计算统计熔断器数据值
- 调用降级方法或则返回依赖请求的真正结果
实例化Command对象
HytrixCommand和HystrixObservableCommand包装了对外部依赖访问的逻辑,整个流程的第一个步骤就是实例化HystrixCommand或则HystrixObservableCommand对象。在构造这两个Command对象时,可以通过构造方法传递任何执行过程中需要的参数。
如果对外部依赖调用只返回一个结果值,那么可以实例化一个HystrixCommand对象
HystrixCommand command = new HystrixCommand(arg1, arg2);
如果在调用外部依赖时需要返回多个结果值时,可以实例化一个HystrixObservableCommand对象
HystrixObservableCommand