短路-Hystrix配置



我正在尝试使用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 有疑问

  1. 它是否表示在3次故障后断路或
  2. 在3次并发故障后断开电路

通过文件链接

有人能回答吗?

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

在持续时间为metrics.rollingStats.timeInMilliseconds的时间跨度内,导致已处理异常的动作的百分比超过errorThresholdPercentage,前提是该时间跨度中通过电路的动作数量至少为requestVolumeThreshold


什么是requestVolumeThresholdrequestVolumeThreshold是在电路计算故障率百分比之前,必须满足(在滚动窗口内)通过电路的呼叫量(数量)的最小阈值。只有当达到这个最小音量(在每个时间窗口中)时,电路才会将您的呼叫失败比例与您配置的errorThresholdPercentage进行比较。

想象一下,没有这样的最小音量通过电路阈值。想象一下时间窗口中的第一个调用出现错误。您将有1个调用中的1个是错误,=100%的失败率,这高于您设置的50%阈值。所以电路会立即断开。

requestVolumeThreshold的存在使得这种情况不会发生。这实际上是说,在每个时间窗口中至少收到requestVolumeThreshold呼叫之前,通过电路的错误率在统计上并不显著(并且不会与errorThresholdPercentage进行比较)。

我对hystrix很陌生,但我想我可以帮你。

通常,hystrix.command.default.circuitBreaker.requestVolumeThreshold是一个在滚动窗口中设置最小请求数的属性,该窗口将使电路跳闸,其默认值为20,其值可以在属性文件或@HystrixCommand注释方法中更改。

例如,如果该属性值为20,则如果在滚动窗口(比如10秒的窗口)中仅接收到19个请求,则即使所有19个请求都失败,电路也不会跳闸断开。如果失败的请求值达到20,则电路将被断开,并且即使呼叫成功,相应的呼叫也将被发送到回退,直到睡眠窗口时间段结束。

睡眠窗口时间段设置电路跳闸后,在允许再次尝试确定电路是否应再次闭合之前拒绝请求的时间量。其值默认为5000毫秒。这可以通过重写circuitBreaker.sleepWindowInMilliseconds属性来更改。

您可以在此处找到所有属性及其描述。

相关内容

  • 没有找到相关文章

最新更新