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
- 是否提示3次失败后开路
或
- 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。
我正在尝试使用 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 电路将中断:
within a timespan of duration
metrics.rollingStats.timeInMilliseconds
, the percentage of actions resulting in a handled exception exceedserrorThresholdPercentage
, provided also that the number of actions through the circuit in the timespan is at leastrequestVolumeThreshold
什么是 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。