Hystrix熔断器使用时的三个参数介绍
circuitBreaker.sleepWindowInMilliseconds
断路器的快照时间窗,也叫做窗口期。可以理解为一个触发断路器的周期时间值,默认为5秒(5000)。
这个参数大家应该不陌生,但是网上对他的解释有两种,一种是说在这个时间内如果发生断路的请求数超过了设置数则会熔断;另一种是说如果发生了熔断,那么在这个时间后会成为半开状态
其实以上两种都对,因为这两个时间都是一个窗口期
circuitBreaker.requestVolumeThreshold
断路器的窗口期内触发断路的请求阈值,默认为20。
当一个窗口期超过了20之后,则去看下面那个参数能够容忍的百分比阈值是否超过,若超过则熔断。假如某个窗口期内的请求总数都不到该配置值,那么断路器连发生的资格都没有。断路器在该窗口期内将不会被打开。
circuitBreaker.errorThresholdPercentage
断路器的窗口期内能够容忍的错误百分比阈值,默认为50(也就是说默认容忍50%的错误率)。
假如一个窗口期内,发生了100次服务请求,其中50次出现了错误。在这样的情况下,断路器将会被打开。在下个窗口期结束之前,即使是之前可以正确访问得,也将被执行fallback逻辑。
最后他的默认设置的意思是: 在一个窗口期内(关闭状态),若请求数超过20,并且错误的数量超过50%,那么就会触发熔断。在接下来的一个窗口期内任何请求都会降级(开启状态),直到下一个请求过去进入半开状态,进入半开状态后继续从新判定。