我正在尝试使用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/