生產技巧:Feign如何控制Hystrix的啓停、超時、熔斷?

原文:http://www.itmuch.com/spring-cloud-sum/feign-hystrix/ ,轉載請說明出處。java

這也是一篇寫於2017-08先後的工做日誌,當時因爲項目比較多,不少團隊對Feign和Hystrix之間的小曖昧搞不清楚,因此寫了本篇文章,但願對你們的工做有所幫助。spring

  1. 要想全局關閉Hystrix,只需使用以下配置便可:ui

    feign.hystrix.enabled: false

    這樣,就會爲全部服務關閉掉Feign的Hystrix支持。也就是說:A服務調用B服務,若是在A服務上設置該屬性,A服務的全部Feign Client都不會再有Hystrix熔斷的能力了。prototype

  2. 全局配置夠靈活,通常不能知足實際項目的要求。實際項目中,每每須要精確到指定服務的細粒度配置。例如:調用服務a時關閉Hystrix,調用b服務時打開Hystrix。可以下配置:日誌

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

    那麼,這個FooConfiguration只須要編寫以下便可:code

    public class FooConfiguration {
        @Bean
    	@Scope("prototype")
    	public Feign.Builder feignBuilder() {
    		return Feign.builder();
    	}
    }

    這樣,對於name = "a" 的Feign Client都會關閉Hystrix支持。ci

  3. 不少場景下,關閉Hystrix相對暴力,特別是上文編寫代碼的方式。不少時候,咱們可能更但願只是關閉熔斷,抑或是關閉超時保護。此時要怎麼搞呢?get

    關閉熔斷:it

    # 全局關閉熔斷:
    hystrix.command.default.circuitBreaker.enabled: false
    # 局部關閉熔斷:
    hystrix.command.<HystrixCommandKey>.circuitBreaker.enabled: false

    設置超時:io

    # 全局設置超時:
    hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds: 1000
    # 局部設置超時:
    hystrix.command.<HystrixCommandKey>.execution.isolation.thread.timeoutInMilliseconds: 1000

    關閉超時:

    # 全局關閉:
    hystrix.command.default.execution.timeout.enabled: false
    # 局部關閉:
    hystrix.command.<HystrixCommandKey>.execution.timeout.enabled: false

    其中的<HystrixCommandKey> ,是個變量,能夠打開服務的hystrix.stream 端點便可看到,也可在Hystrix Dashboard中查看。

相關文章
相關標籤/搜索