我正在尝试使用hystrix-javanica为我的应用程序实现hystrix。

我已经如下配置了hystrix-configuration.properties

hystrix.command.default.execution.isolation.strategy=SEMAPHORE
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=10000 
hystrix.command.default.fallback.enabled=true
hystrix.command.default.circuitBreaker.enabled=true
hystrix.command.default.circuitBreaker.requestVolumeThreshold=3 
hystrix.command.default.circuitBreaker.sleepWindowInMilliseconds=50000
hystrix.command.default.circuitBreaker.errorThresholdPercentage=50


短路模式工作正常,但我对此hystrix.command.default.circuitBreaker.requestVolumeThreshold=3表示怀疑


3次故障后是否说明断开电路
要么
3个并发故障后断开电路。


阅读了文档link

有人可以回答吗?



最佳答案

Hystrix断路器的工作方式:Hystrix不提供在给定数量的故障后会断开的断路器。如果出现以下情况,Hystrix电路将断开:


在持续时间metrics.rollingStats.timeInMilliseconds的时间范围内,导致已处理异常的操作百分比超过了errorThresholdPercentage,并且在该时间范围内通过电路的操作数量至少为requestVolumeThreshold




什么是requestVolumeThreshold?
requestVolumeThreshold是在电路计算完全故障率之前必须满足的(在滚动窗口内)通过电路的呼叫量(数量)的最小阈值。仅在达到此最小音量(在每个时间窗口中)时,电路才会将呼叫的失败比例与已配置的errorThresholdPercentage进行比较。

想象一下,没有这样的最小通过电路体积阈值。想象一下在一个时间窗口内的第一个呼叫错误。您将有1个呼叫中有1个是错误,即失败率= 100%,高于您设置的50%阈值。因此,电路将立即断开。

requestVolumeThreshold存在,因此不会发生。可以说,通过电路的错误率在统计上并不显着(并且不会与errorThresholdPercentage进行比较),直到在每个时间窗口中至少收到requestVolumeThreshold个调用为止。

关于short-circuiting - Hystrix配置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38524259/

10-10 16:50