生产技巧:Feign如何控制Hystrix的启停超时熔断?

Posted IT牧场

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了生产技巧:Feign如何控制Hystrix的启停超时熔断?相关的知识,希望对你有一定的参考价值。

这也是一篇写于2017-08前后的工作日志,当时由于项目比较多,很多团队对Feign和Hystrix之间的小暧昧搞不清楚,所以写了本篇文章,希望对大家的工作有所帮助。


  1. 要想全局关闭Hystrix,只需使用如下配置即可:

    1

    feign.hystrix.enabled: false

    这样,就会为所有服务关闭掉Feign的Hystrix支持。也就是说:A服务调用B服务,如果在A服务上设置该属性,A服务的所有Feign Client都不会再有Hystrix熔断的能力了。

  2. 全局配置够灵活,一般不能满足实际项目的要求。实际项目中,往往需要精确到指定服务的细粒度配置。例如:调用服务a时关闭Hystrix,调用b服务时打开Hystrix。可如下配置:

    1

    @FeignClient(name="a", configuration = FooConfiguration.class)

    那么,这个FooConfiguration只需要编写如下即可:

    1

    2

    3

    4

    5

    6

    7

    public class FooConfiguration {

    @Bean

    @Scope("prototype")

    public Feign.Builder feignBuilder() {

    return Feign.builder();

    }

    }

    这样,对于name = "a" 的Feign Client都会关闭Hystrix支持。

  3. 很多场景下,关闭Hystrix相对暴力,特别是上文编写代码的方式。很多时候,我们可能更希望只是关闭熔断,抑或是关闭超时保护。此时要怎么搞呢?

    关闭熔断:

    1

    2

    3

    4

    # 全局关闭熔断:

    hystrix.command.default.circuitBreaker.enabled: false

    # 局部关闭熔断:

    hystrix.command.<HystrixCommandKey>.circuitBreaker.enabled: false

    设置超时:

    1

    2

    3

    4

    # 全局设置超时:

    hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds: 1000

    # 局部设置超时:

    hystrix.command.<HystrixCommandKey>.execution.isolation.thread.timeoutInMilliseconds: 1000

    关闭超时:

    1

    2

    3

    4

    # 全局关闭:

    hystrix.command.default.execution.timeout.enabled: false

    # 局部关闭:

    hystrix.command.<HystrixCommandKey>.execution.timeout.enabled: false

    其中的<HystrixCommandKey> ,是个变量,可以打开服务的hystrix.stream 端点即可看到,也可在Hystrix Dashboard中查看。


以上是关于生产技巧:Feign如何控制Hystrix的启停超时熔断?的主要内容,如果未能解决你的问题,请参考以下文章

nginx的启停控制命令详解

Nginx服务的控制方式

请教三菱plc中怎么用旋转编码器的脉冲信号来控制步进电机的启停,编码转电机也转,梯形图怎么写?

Tomcat的启停脚本源码解析

postgresql的启停和创建

关于使用浏览器触发录屏的启停。(ScreenCapturerRecorder)?