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微服务实战》,电子工业出版社,翟永超

posted @ 2017-12-26 11:55  寻找风口的猪  阅读(2031)  评论(0编辑  收藏  举报