Hystrix-命令名称分组以及线程池划分

Posted 寻找风口的猪

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hystrix-命令名称分组以及线程池划分相关的知识,希望对你有一定的参考价值。

命令名称:

  1.1 以继承的方式实现Hystrix命令使用类名作为默认的命令名称,我们也可以在构造函数中通过Setter静态类来设置

        

  1.2 为了保存每个命令分配的Setter分配,你也可以像这样缓存Setter

  

命令分组和线程池划分:

  通过设置命令组,Hystrix会根据组来组织和统计命令的告警、仪表盘等信息。一定要设置命令组,因为除了根据组来实现统计外,Hystrix命令默认的线程划分也是根据命令分组来实现的。默认情况下,Hystrix会让相同组名的精灵使用同一个线程池,所以我们需要在创建Hystrix命令时为其指定命令组名来实现默认的线程池划分。

  Hystrix还提供了HystrixThreadPoolKey来对线程池进行设置,通过它我们可以实现更细粒度的线程池划分,比如

   

  通常情况下,尽量通过HystrixThreadPoolKey的方式来指定线程池的划分,而不是通过组名默认的方式,因为多个不同的命令可能从业务逻辑上来看属于同一个组,但是往往从实现本身上需要跟其他命令进行隔离。

  当我们使用@HystrixCommand注解的时候,只需要设置commandKey、groupKey以及threadPoolKey属性就可以设置命令名称、分组以及线程划分。

   @HystrixCommand(commandKey = "getUserId", groupKey = "UserGroup", threadPoolKey = "getUserByIdThread")
    public String getUserId(String name) {
        .....
    }

 

 

 

 

参考:

[1]Github,https://github.com/Netflix/Hystrix/wiki/How-it-Works

 [2] 《SpringCloud微服务实战》,电子工业出版社,翟永超

以上是关于Hystrix-命令名称分组以及线程池划分的主要内容,如果未能解决你的问题,请参考以下文章

基于 Hystrix 线程池技术实现资源隔离

hystrix 如何创建他们的线程池

如何在 hystrix 线程池中找到活动线程的数量?

hystrix与sentinel的区别你懂没?

Hystrix线程池配置

Hystrix系列之信号量、线程池