Spring Cloud中Hystrix、Ribbon及Feign的相关配置
Spring Cloud中Hystrix、Ribbon及Feign的相关配置
- Hystrix配置说明:
- 线程隔离相关配置
hystrix:
command:
#全局默认配置
default:
#线程隔离相关
execution:
timeout:
#是否给方法执行设置超时时间,默认为true。一般我们不要改。
enabled: true
isolation:
#配置请求隔离的方式,这里是默认的线程池方式。还有一种信号量的方式semaphore,使用比较少。
strategy: threadPool
thread:
#方式执行的超时时间,默认为1000毫秒,在实际场景中需要根据情况设置
timeoutInMilliseconds: 1000
#发生超时时是否中断方法的执行,默认值为true。不要改。
interruptOnTimeout: true
#是否在方法执行被取消时中断方法,默认值为false。没有实际意义,默认就好!
interruptOnCancel: false
- 熔断器相关配置
hystrix:
command:
#全局默认配置
default:
#熔断器相关配置
circuitBreaker:
#说明:是否启动熔断器,默认为true。我们使用Hystrix的目的就是为了熔断器,不要改,否则就不要引入Hystrix。
enabled: true
#说明1:启用熔断器功能窗口时间内的最小请求数,假设我们设置的窗口时间为10秒,
#说明2:那么如果此时默认值为20的话,那么即便10秒内有19个请求都失败也不会打开熔断器。
#说明3:此配置项需要根据接口的QPS进行计算,值太小会有误打开熔断器的可能,而如果值太大超出了时间窗口内的总请求数,则熔断永远也不会被触发
#说明4:建议设置一般为:QPS*窗口描述*60%
requestVolumeThreshold: 20
#说明1:熔断器被打开后,所有的请求都会被快速失败掉,但是何时恢复服务是一个问题。熔断器打开后,Hystrix会在经过一段时间后就放行一条请求
#说明2:如果请求能够执行成功,则说明此时服务可能已经恢复了正常,那么熔断器会关闭;相反执行失败,则认为服务仍然不可用,熔断器保持打开。
#说明3:所以此配置的作用是指定熔断器打开后多长时间内允许一次请求尝试执行,官方默认配置为5秒。
sleepWindowInMilliseconds: 5000
#说明1:该配置是指在通过滑动窗口获取到当前时间段内Hystrix方法执行失败的几率后,根据此配置来判断是否需要打开熔断器
#说明2:这里官方的默认配置为50,即窗口时间内超过50%的请求失败后就会打开熔断器将后续请求快速失败掉
errorThresholdPercentage: 50
#说明:是否强制启用熔断器,默认false,没有什么场景需要这么配置,忽略!
forceOpen: false
#说明:是否强制关闭熔断器,默认false,没有什么场景需要这么配置,忽略!
forceClosed: false
- Metrics(统计器)相关配置
hystrix:
command:
#全局默认配置
default:
metrics:
rollingStats:
#说明:此配置用于设置Hystrix统计滑动窗口的时间,单位为毫秒,默认设置为10000毫秒,即一个滑动窗口默认统计的是10秒内的请求数据。
timeInMilliseconds: 10000
#说明2:此属性指定了滑动统计窗口划分的桶数。默认为10。
#说明2:需要注意的是,metrics.rollingStats.timeInMilliseconds % metrics.rollingStats.numBuckets == 0必须成立,否则就会抛出异常
numBuckets: 10
rollingPercentile:
#说明1:此属性配置统计方法是否响应时间百分比,默认为true。
#说明2:Hystrix会统计方法执行1%,10%,50%,90%,99%等比例请求的平均耗时用来生成统计图表。
#说明3:如果禁用该参数设置false,那么所有汇总统计信息(平均值、百分位数)将返回-1。
enabled: true
#说明:统计响应时间百分比时的窗口大小,默认为60000毫秒,即1分钟
timeInMilliseconds: 60000
#说明1:此属性用于设置滑动百分比窗口要划分的桶数,默认为6。
#说明2:需要注意的是,metrics.rollingPercentile.timeInMilliseconds % metrics.rollingPercentile.numBuckets == 0必须成立,否则会抛出异常
numBuckets: 6
#说明1:该属性表示统计响应时间百分比,每个滑动窗口的桶内要保存的请求数,默认为100。
#说明2:即默认10秒的桶内,如果执行了500次请求,那么只有最后100次请求执行的信息会被保存到桶内。
#说明3:增加这个值会增加内存消耗量,一般情况下无需更改。
bucketSize: 100
healthSnapshot:
#说明1:该参数配置了健康数据统计器(会影响Hystrix熔断)中每个桶的大小,默认为500毫秒。
#说明2:在统计时Hystrix通过metrics.rollingStats.timeInMilliseconds / metrics.healthSnapshot.intervalInMilliseconds计算出桶数。
#说明3:在窗口滑动时,每滑过一个桶的时间就统计一次当前窗口内请求的失败率。
intervalInMilliseconds: 500
- 线程池相关配置
hystrix:
command:
default:
#说明:核心线程池的大小,默认值是10
coreSize: 10
#说明:是否允许线程池扩展到最大线程池数量,默认为false。
allowMaximumSizeToDivergeFromCoreSize: false
#说明:线程池中线程的最大数量,默认值是10。此配置项单独配置时并不会生效,需要启用allowMaximumSizeToDivergeFromCoreSize
maximumSize: 10
#说明1:作业队列的最大值,默认值为-1。表示队列会使用SynchronousQueue,此时值为0,Hystrix不会向队列内存放作业。
#说明2:如果此值设置为一个正int型,队列会使用一个固定size的LinkedBlockingQueue,此时在核心线程池都忙碌的情况下,会将作业暂时存放在此队列内,但是超出此队列的请求依然会被拒绝
maxQueueSize: -1
#设置队列拒绝请求的阀值,默认为5。
queueSizeRejectionThreshold: 5
#控制线程在释放前未使用的时间,默认为1分钟。
keepAliveTimeMinutes: 1
- Ribbon配置说明:
ribbon:
#说明:同一台实例的最大自动重试次数,默认为1次,不包括首次
MaxAutoRetries: 1
#说明:要重试的下一个实例的最大数量,默认为1,不包括第一次被调用的实例
MaxAutoRetriesNextServer: 1
#说明:是否所有的操作都重试,默认为true
OkToRetryOnAllOperations: true
#说明:从注册中心刷新服务器列表信息的时间间隔,默认为2000毫秒,即2秒
ServerListRefreshInterval: 2000
#说明:使用Apache HttpClient连接超时时间,单位为毫秒
ConnectTimeout: 3000
#说明:使用Apache HttpClient读取的超时时间,单位为毫秒
ReadTimeout: 3000
#说明:初始服务器列表,不需要手工配置,在运行时动态根据注册中心更新
listOfServers: www.microsoft.com:80,www.yahoo.com:80,www.google.com:80
- Feign配置说明:
feign:
hystrix:
enabled: true
client:
config:
#JDK默认HttpURLConnection 实现的 Http Client配置
default:
#连接超时时间
connectTimeout: 5000
#读取超时时间
readTimeout: 5000
#错误解码器
errorDecoder: com.wudimanong.client.common.FeignClientErrorDecoder
#解码器
encoder: com.wudimanong.client.common.FeignClientEncoder
#编码器
decoder: com.wudimanong.client.common.FeignClientDecoder
参考资料:
https://github.com/Netflix/Hystrix/wiki/Configuration
https://github.com/Netflix/ribbon/wiki/Getting-Started
https://shihlei.iteye.com/blog/2435851
https://cloud.spring.io/spring-cloud-netflix/spring-cloud-netflix.html#_hystrix_timeouts_and_ribbon_clients
https://blog.csdn.net/east123321/article/details/82385816