hystrix熔断器之自定义插架

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hystrix熔断器之自定义插架相关的知识,希望对你有一定的参考价值。

  Hystrix内部通过接口方式编程,具体实现通过HystrixPlugins获取。用户可以实现这些接口来自定义Hystrix相关行为。

  HystrixPlugins内部提供了5种类型的插件:

  并发相关类(HystrixConcurrencyStrategy)

  事件通知类(HystrixEventNotifier)

  度量信息类(HystrixMetricsPublisher)

  Properties配置类(HystrixPropertiesStrategy)

  HystrixCommand回调函数类(HystrixCommandExecutionHook)

  HystrixPlugins获取插件顺序:

  1.HystrixPlugins 会使用通过register注册的实现类。

  2.HystrixPlugins会去properties(HystrixDynamicProperties)配置下需找相应类型的实现类。

  3.通过ServiceLoader获取相应类型的实现类。

  4.使用默认实现类。

  HystrixPluginsproperties(HystrixDynamicProperties)配置生成顺序:

  1.通过HystrixDynamicPropertiesSystemProperties需找配置的HystrixDynamicProperties。  

  2.通过ServiceLoader获取相应类型的实现类。

  3.通过HystrixArchaiusHelper获取HystrixDynamicProperties。

  4.使用HystrixDynamicPropertiesSystemProperties。

   

HystrixPropertiesStrategy

当通过工厂类(HystrixPropertiesFactory)获取Hystrix各个组件的配置信息时,实际通过HystrixPropertiesStrategy获取。主要包括:

Hystrix命令相关配置(HystrixCommandProperties

Hystrix线程池配置(HystrixThreadPoolProperties

HystrixCollapse配置(HystrixCollapserProperties

Hystrix定时器线程池配置(HystrixTimerThreadPoolProperties

HystrixConcurrencyStrategy

并发相关类用来创建和并发相关的类,主要包括:

执行器(ThreadPoolExecutor

执行任务(Callable

阻塞队列(BlockingQueue

Hystrix请求变量(HystrixRequestVariable

创建执行器(ThreadPoolExecutor):

创建JDK执行器(ThreadPoolExecutor);如果有APPEngine使用APPEngineThreadFactory;如果没有则自定义ThreadFactory

创建执行任务(Callable):

Hystrix在使用执行器执行执行任务(Callable)之前,会调用HystrixConcurrencyStrategy的相关方法让用户分装或操作Callable,默认直接返回执行任务(Callable)。

创建阻塞队列(BlockingQueue

创建的阻塞队列会被用来创建执行器(ThreadPoolExecutor),当指定的最大队列小于零时,创建JDKSynchronousQueue,当大于等于零时,创建JDKLinkedBlockingQueue

创建Hystrix请求变量(HystrixRequestVariable

Hystrix请求变量工厂类(HystrixRequestVariableHolder)获取请求过程中存储的数据时,实际通过并发策略类(HystrixConcurrencyStrategy)来获得请求变量(HystrixRequestVariable),

Hystrix请求变量(HystrixRequestVariable

HystrixRequestContext存储Hystrix请求变量(HystrixRequestVariable)。

 

 

HystrixDynamicPropertiesSystemProperties

 

HystrixDynamicProperties

 

ServiceLoader

 

HystrixArchaiusHelper

以上是关于hystrix熔断器之自定义插架的主要内容,如果未能解决你的问题,请参考以下文章

hystrix源码之插架

微服务架构整理-(九SpringCloud实战之Hystrix [2])

微服务架构整理-(九SpringCloud实战之Hystrix [2])

自定义springcloud-gateway熔断处理

spring cloud --- Ribbon 客户端负载均衡 + RestTemplate + Hystrix 熔断器 [服务保护] ---心得

spring cloud --- Ribbon 客户端负载均衡 + RestTemplate + Hystrix 熔断器 [服务保护] ---心得