- 以下的属性都是spring cloud 1.5.9版本的。
commandProperties
- execution.isolation.strategy
使用命令调用的隔离模式,默认采用线程隔离 - execution.isolation.thread.timeoutInMilliseconds
一个命令执行的超时时间,以毫秒为单位,默认是1s - execution.timeout.enabled
是否开启超时触发,默认是开启 - execution.isolation.thread.interruptOnTimeout
使用线程隔离时,当命令超时时是否对命令所在线程执行中断操作,默认为true,只会中断线程处于阻塞状态(如sleep,wait,join等状态),正常运行的线程都不会中断 - execution.isolation.thread.interruptOnFutureCancel
使用线程隔离时,当Future取消时是否对命令所在线程执行中断操作,默认为false - execution.isolation.semaphore.maxConcurrentRequests
使用信号量隔离时,命令调用最大的并发数,默认为10个 - fallback.enabled
是否开启fallback降级策略,默认为true - fallback.isolation.semaphore.maxConcurrentRequests
使用信号量隔离时,命令fallback调用的最大并发数,默认为10个 - metrics.rollingStats.timeInMilliseconds
统计滚动窗口的时间,默认为10s(并且默认滚动窗口的桶数量为10个,所以一个桶一秒钟),熔断器会使用这个时间 - metrics.rollingStats.numBuckets
统计窗口的桶数量,默认为10个,所以在一个10s的统计窗口中一个桶1秒钟 - metrics.rollingPercentile.enabled
是否开启监控统计功能,计算各个百分比(SLA),默认为true - metrics.rollingPercentile.timeInMilliseconds
滚动百分比的统计时间,默认为60000即1分钟,1分钟统计一次 - metrics.rollingPercentile.numBuckets
滚动百分比的桶数量,默认为6个,(在60s的窗口中10秒钟一个桶) - metrics.rollingPercentile.bucketSize
每一个百分比窗口桶可以存放值得数量,默认为100即每个桶都多可以放100个值 - metrics.healthSnapshot.intervalInMilliseconds
健康快照之间的间隔时间,默认为500ms(错误百分比等统计) - circuitBreaker.requestVolumeThreshold
一个滚动窗口内触发熔断的最少请求数,默认是20个。滚动窗口时间取自(metrics.rollingStats.timeInMilliseconds),默认10s内至少请求20次,熔断才发挥作用。 - circuitBreaker.sleepWindowInMilliseconds
触发熔断之后(拒绝请求),多长时间开始重新尝试执行,默认是5000ms。步骤如下:熔断器中断请求5秒后会进入半打开状态,放下一个请求进来重试,如果该请求成功就关闭熔断器,否则继续等待一个熔断时间窗口 - circuitBreaker.enabled
是否启用熔断器,默认是启用 - circuitBreaker.errorThresholdPercentage
设置启动熔断的错误或者延迟的比例,默认是50%。在一个滚动窗口(默认10s)如果超过50%的请求发生错误或者延迟,则触发熔断器,前提是circuitBreaker.requestVolumeThreshold条件满足 - circuitBreaker.forceOpen
是否强制开启熔断器,默认为false,开启之后所有请求全部拒绝,直接fallback - circuitBreaker.forceClosed
是否强制关闭熔断器,默认为false,开启之后不能熔断 - requestLog.enabled
hystrix执行的日志是否打印,默认为true - requestCache.enabled
是都缓存请求,request-scope缓存,默认为true
threadPoolProperties
- coreSize
设置线程池的大小,默认为10,也就是说最大并发为10 - maximumSize
设置线程池打最大值,默认为10,只有allowMaximumSizeToDivergeFromCoreSize
为true时才生效 - allowMaximumSizeToDivergeFromCoreSize
该属性允许配置maximumSize生效,当coreSize小于maximumSize时创建一个最大值为maximumSize并发的线程池,但会在相对不活动期间返回线程到系统(受keepAliveTimeInMinutes控制) - keepAliveTimeMinutes
设置线程保持的时间,以分钟为单位,默认为1分钟,如果coreSize小于maximumSize,那么这个属性控制一个线程在不使用之后多久将被释放 - maxQueueSize
该属性设置实现的最大队列大小,默认为-1,-1代表SynchronousQueue将被使用,否则将使用一个正值的LinkedBlockingQueue,这个属性只适用于初始化期间,并且不能更改或者调整,如果修改的话需要重启 - queueSizeRejectionThreshold
该属性设置队列大小拒绝阈值,即maxQueueSize还没有达到最大值,此值也能动态响应拒绝队列的大小,当maxQueueSize=-1时此值不起作用 - metrics.rollingStats.timeInMilliseconds
该属性设置统计滚动窗口的持续时间,以还秒为单位。这是为线程池保留多长时间的指标,默认为1000ms - metrics.rollingStats.numBuckets
该属性设置滚动统计窗口分成桶的数量,必须能被metrics.rollingStats.timeInMilliseconds整除,默认为10
collapserProperties
- maxRequestsInBatch 该属性设置批量处理的最大请求数量,默认值为Integer.MAX_VALUE
- timerDelayInMilliseconds 该属性设置多长时间之内算一次批处理,默认为10ms
- requestCache.enabled 是都缓存请求,request-scope缓存,默认为true
- metrics.rollingStats.timeInMilliseconds 统计滚动窗口的时间,默认为10s(并且默认滚动窗口的桶数量为10个,所以一个桶一秒钟)
- metrics.rollingStats.numBuckets 统计窗口的桶数量,默认为10个,所以在一个10s的统计窗口中一个桶1秒钟
- metrics.rollingPercentile.enabled 是否开启监控统计功能,计算各个百分比(SLA),默认为true
- metrics.rollingPercentile.timeInMilliseconds 滚动百分比的统计时间,默认为60000即1分钟,1分钟统计一次
- metrics.rollingPercentile.numBuckets 滚动百分比的桶数量,默认为6个,(在60s的窗口中10秒钟一个桶)
- metrics.rollingPercentile.bucketSize 每一个百分比窗口桶可以存放值得数量,默认为100即每个桶都多可以放100个值
本文参考资料:
https://github.com/Netflix/Hystrix/wiki/Configuration