Zuul 、Feign Client 熔断配置

一、Zuul网关熔断配置

  1. 隔离策略:支持根据serviceid 作为groupKey 来配置隔离的信号量参数
    1. 默认信号量配置:zuul.hystrix.command.default.execution.isolation.semaphore.maxConcurrentRequests = 300
    2. 针对某个微服务特殊化配置:zuul.hystrix.command.<服务ID>.execution.isolation.semaphore.maxConcurrentRequests = 500
       
  2. 断路器配置:支持根据serviceid 作为 commandKey,进行特殊化配置,其中包括熔断超时。
    1. 默认超时配置:hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds = 5000
    2. 针对某个微服务特殊化配置:hystrix.command.<服务ID>.execution.isolation.thread.timeoutInMilliseconds = 25000
       
  3. 特殊化配置比默认配置优先级高,默认配置不能在apollo动态修改实时生效,特殊化配置可以在apollo配置并实时生效。

二、Feign client熔断配置

  1. 隔离策略:支持根据serviceid 作为groupKey 来配置 隔离的线程池或 信号量参数

    hystrix: 

     threadpool:  

      default:  # 【groupKey, default为默认配置】 

         maximumSize: 10 # 【默认10,hystrix-core version >=5.7才支持】 

         coreSize: 10  #【默认10】 

         maxQueueSize: -1  #【默认为-1,代表SynchronousQueue,不使用队列缓冲。】 

         queueSizeRejectionThreshold: # 【队列拒绝窗口,小于等于maxQueueSize,实现动态改变队列大小,如果maxQueueSize=-1,该配置不生效】 

         keepAliveTimeMinutes: 

      msv-providerapp-demo:  # 根据应用访问量,对微服务线程池进行特殊配置。 该值对应@FeignClient 中的value,一般为serviceId。

         maximumSize: 30   

         coreSize: 10   

         maxQueueSize: 1000    

         queueSizeRejectionThreshold: 1000  

         keepAliveTimeMinutes: 1

  2. 断路器配置:支持根据接口(不支持serviceid )作为 commandKey,进行特殊化配置,其中包括熔断超时

    hystrix:  

      command: 

        default:  #CommandKey 熔断器id , default为默认配置

          execution: 

              timeout: 

                    enabled: true  # 默认开启  

              isolation:  

                 strategy: THREAD  

                 thread: 

                   timeoutInMilliseconds: 1000 # 默认超时1s

          circuitBreaker :   

              enabled: true  # 默认开启

              sleepWindowInMilliseconds: 5000 #默认5000ms,熔断尝试关闭时间 

              requestVolumeThreshold: 20  #默认20,

              metrics.rollingStats.timeInMilliseconds: 10000 #【默认1000ms】秒内请求数>=requestVolumeThreshold,才使用熔断机制 

              errorThresholdPercentage: 50  #默认50%,当请求数达到requestVolumeThreshold要求,如果错误率达到 errorThresholdPercentage,则打开熔断

     

     

         FeignProviderServer#callHi(String):  # 根据接口,特殊化配置熔断器,接口commandkey命名规则见[2.1]

           execution: 

              timeout: 

                 enabled: true  # 默认开启  

              isolation:  

                 strategy: THREAD  

                 thread: 

                   timeoutInMilliseconds: 5000 #

           circuitBreaker :  

           …………

     

    • 2.1针对某个接口配置断路器说明:
      hystrix.command.xxx#yyy(zzz).execution.isolation.thread.timeoutInMilliseconds=mmm

      xxx:要设置的某个FeignClient的类名
      yyy:方法名
      zzz:参数,如果是基础类型,就直接填基础类型:String/int;如果是某个对象,就直接填对象的类名
      mmm:要设置的超时时间(毫秒)
      例子:hystrix.command.FeignProviderServer#callHi(String).execution.isolation.thread.timeoutInMilliseconds=5000

     

  3. 特殊化配置比默认配置优先级高,默认策略不能在apollo动态修改实时生效,特殊化配置可以在apollo配置实时生效

你可能感兴趣的:(Zuul 、Feign Client 熔断配置)