Hystrix系列之工作流程

来源:互联网 发布:java工程师月薪 编辑:程序博客网 时间:2024/06/06 20:47

工作流程

工作流程

Step1:构建命令

创建HystrixCommand或者HystrixObservableCommand对象:

HystrixCommand command = new HystrixCommand(arg1, arg2);HystrixObservableCommand command = new HystrixObservableCommand(arg1, arg2);

Step2:执行命令

K             value   = command.execute(); //同步,针对HystrixCommandFuture<K>     fValue  = command.queue(); //异步,针对HystrixCommandObservable<K> ohValue = command.observe(); //异步,全部Observable<K> ocValue = command.toObservable(); //异步,全部

Step3:判断响应是否已缓存

  如果请求对应的响应已经在缓存中,直接返回响应;

Step4:判断熔断器是否打开

  如果熔断器没打开,继续执行下一步;否则,命令不再执行,直接跳到步骤8,执行降级。

Step5:判断线程池、任务队列、信号量是否已满

  如果没满,继续执行下一步;否则,命令不再执行,直接跳到步骤8,执行降级。

Step6:调用依赖的服务

  调用依赖的外部服务,即执行HystrixObservableCommand.construct() or HystrixCommand.run()。如果命令执行超时,则会抛出TimeoutException,直接跳到步骤8,执行降级。如果命令执行成功,则回调onCompleted()方法。

Step7:监控信息收集

  熔断器定时采集命令执行过程中各种信息,包括成功、失败、超时和拒绝等,用于计算判断熔断器是否需要断开/开启等。

Step8:执行降级

  执行HystrixCommand.getFallback()或者HystrixObservableCommand.resumeWithFallback(),如果降级逻辑出错,则回调onError()方法。

Step9:返回响应

这里写图片描述

原创粉丝点击