hystrix 常用设置
HystrixCommandGroupKey 是用来 声明一个服务接口的,,默认 HystrixCommandGroupKey 就是线程池名称
HystrixCommandKey 默认是 类名,一般设置为类名+Comand就 ok
HystrixThreadPoolKey 用来设置线程池 的,如果不设置 ,默认 HystrixCommandGroupKey 就是线程池名称
withCoreSize 设置线程池的线程数量
withMaximumSize 设置线程池的最大数量
withAllowMaximumSizeToDivergeFromCoreSize 允许动态调整线程池的数量
withKeepAliveTimeMinutes 线程池中的线程多久不使用就回收
withMaxQueueSize 设置缓存队列的最大大小
withQueueSizeRejectionThreshold 设置缓存队列的大小
withMaxQueueSize withQueueSizeRejectionThreshold 哪个值小,哪个就是 缓存队列的大小
withCircuitBreakerRequestVolumeThreshold 设置断路器10秒内的 流量阀值
举个例子,可能看起来是这样子的,要求在10s内,经过短路器的流量必须达到30个;在10s内,经过短路器的流量才10个,那么根本不会去判断要不要短路
withCircuitBreakerErrorThresholdPercentage 断路器统计到的异常调用的占比超过了一定的阈值
比如说在10s内,经过短路器的流量(你,只要执行一个command,这个请求就一定会经过短路器),达到了30个;同时其中异常的访问数量,占到了一定的比例,比如说40%的请求都是异常(报错,timeout,reject),会开启短路
withCircuitBreakerSleepWindowInMilliseconds: 断路器打开,尝试 会half-open 请求的等待时间
断路器打开的时候,所有经过该断路器的请求全部被短路,不调用后端服务,直接走fallback降级
经过了一段时间之后,HystrixCommandProperties.circuitBreakerSleepWindowInMilliseconds(),会half-open,让一条请求经过短路器,看能不能正常调用。如果调用成功了,那么就自动恢复,转到close状态
短路器,会自动恢复的,half-open,半开状态