Hystrix 配置

Hystrix Configuration

我正在尝试使用 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次并发故障后开路

阅读文档link

有人能回答吗?

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

within a timespan of duration metrics.rollingStats.timeInMilliseconds, the percentage of actions resulting in a handled exception exceeds errorThresholdPercentage, provided also that the number of actions through the circuit in the timespan is at least requestVolumeThreshold


什么是 requestVolumeThreshold? requestVolumeThreshold 是在电路计算出完全失败的百分比。只有达到这个最小音量(每次 window),电路才会将您的呼叫失败比例与您配置的 errorThresholdPercentage 进行比较。

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

requestVolumeThreshold 的存在是为了避免这种情况发生。这实际上是在说,在至少 requestVolumeThreshold 次调用之前,电路中的错误率并不 具有统计显着性 (并且不会与 errorThresholdPercentage 进行比较)每次收到 window.

我对 hystrix 比较陌生,但我想我可以帮助你。

一般来说,hystrix.command.default.circuitBreaker.requestVolumeThreshold 是一个 属性,它设置 最小请求数 滚动 window 会使电路跳闸,并且它的默认值为 20,它的值可以在属性文件或我们的 @HystrixCommand 注释方法中更改。

例如,如果 属性 值为 20,那么如果在 滚动 window 中仅收到 19 个请求(比如 window 10 秒)即使所有 19 个都失败,电路也不会跳开。如果失败的请求值达到20,则打开电路,即使调用成功也会将相应的调用发送回退,直到休眠window时间段结束。

休眠 window 时间段设置时间量,在电路跳闸后,在允许再次尝试确定电路是否应再次关闭之前拒绝请求.它的值默认为 5000 毫秒。这可以通过覆盖 circuitBreaker.sleepWindowInMilliseconds 属性.

来更改

您可以找到所有属性及其描述 here