spring cloud --服务容错保护:spring cloud Hystrix--原理简要分析

版权声明:转载请注明原链接 https://blog.csdn.net/lij231/article/details/82956455

spring cloud Hystrix的工作流程简单介绍

首先上流程图

  1.  创建HystrixCommand或者HystrixObservableCommand对象。用来表示对以来服务的请求操作。从命名就能看的出来,使用的是命令模式,其中HystrixCommand返回的是单个操作结果,HystrixObservableCommand返回多个结果
  2. 命令执行。共有4中方法执行命令。
    1. execute():用户执行,从依赖的服务里返回单个结果或抛出异常
    2. queue():异步执行,直接返回一个Future对象
    3. observe():放回observable对象,代表了多个结果,是一个Hot Observable
    4. toObservable():返回Observable对象,但是是一个 Cold Observable
      Hystrix大量的使用了RxJava,想更容易的理解Hystrix的,请自行百度RxJava进行阅读。
  3. 结果是否被缓存。如果已经启用了缓存功能,且被命中,那么缓存就会直接以Observable对象返回
  4. 断路器是否已打开。没有命中缓存,在执行命令前会检查断路器是否已打开。
    1. 断路器已打开,直接执行fallback
    2. 断路器关闭,继续往下执行
  5. 线程池And信号量Or请求队列是否已被占满    如果与该命令有关的线程池和请求队列,或者信号量已经被占满,就直接执行fallback
  6. 执行HystrixObservableCommand.construct () 或 HystrixCommand.run()  方法。如果设置了当前执行时间超过了设置的timeout,则当前处理线程会抛出一个TimeoutyException,如果命令不在自身线程里执行,就会通过单独的计时线程来抛出异常,Hystrix会直接执行fallback逻辑,并忽略run或construct的返回值。
  7. 计算断路器的健康值。
  8. fallback处理。
  9. 返回成功的响应。

Hystrix的执行流程就是这样,当然还有很多细节没有写出来。想要了解的可自行debug。

Hystrix的原理简单分析

猜你喜欢

转载自blog.csdn.net/lij231/article/details/82956455
今日推荐