https://www.cnblogs.com/zhanchenjin/p/17010847.html

.1.1 概述

Hystrix是由Netflix开源的一个工具类库,经常被用于服务的熔断,降级等领域,基于RxJava(一种基于观察者模式的响应式编程框架)实现,具备服务降级、服务熔断、线程与信号隔离、请求缓存、请求合并以及服务监控等强大功能。

https://upload-images.jianshu.io/upload_images/8775426-4557c823df422d0f.png

https://img2023.cnblogs.com/blog/841795/202212/841795-20221228172158730-1903018606.png

Hystrix对应的中文名字是“豪猪”,豪猪周身长满了刺,能保护自己不受天敌的伤害,代表了一种防御机制,这与Hystrix本身的功能不谋而合,因此Netflix团队将该框架命名为Hystrix,并使用了对应的卡通形象做作为Logo。

Hystrix具有以下特征:

  1. 通过HystrixCommand或者HystrixObservableCommand来封装对外部依赖的访问请求,这个访问请求一般会运行在独立的线程中,资源隔离
  2. 对于超出我们设定阈值的服务调用,直接进行超时,不允许其耗费过长时间阻塞住。这个超时时间默认是99.5%的访问时间
  3. 为每一个依赖服务维护一个独立的线程池,或者是信号量,当线程池已满时,直接拒绝对这个服务的调用
  4. 对依赖服务的调用的成功次数,失败次数,拒绝次数,超时次数,进行统计
  5. 如果对一个依赖服务的调用失败次数超过了一定的阈值,自动进行熔断,在一定时间内对该服务的调用直接降级,一段时间后再自动尝试恢复
  6. 当一个服务调用出现失败,被拒绝,超时,短路等异常情况时,自动调用fallback降级机制
  7. 对属性和配置的修改提供近实时的支持

5.1.2 原理与使用

Hystrix服务调用的内部逻辑如下图所示: