Hystrix为有问题的服务实例开路?

时间:2017-10-16 10:27:00

标签: spring-boot spring-cloud-netflix hystrix netflix-ribbon

假设以下情形:

  1. 我有ServiceA调用ServiceB并启用了Hystrix
  2. 有2个ServiceB实例
  3. 其中一个实例面临一些非常严重的问题,即其端点始终抛出错误,但另一个实例正常运行
  4. errorThresholdPercentage设置为80%
  5. 鉴于我们有一个服务实例正常,errorThresholdPercentage不太可能超过80%(最多只能达到50%)
  6. 这意味着只要有问题的实例正在运行,我们仍然会调用它并收到错误
  7. 有没有办法配置Hystrix将电路翻转到实例级别?

1 个答案:

答案 0 :(得分:1)

无法为实例级别配置Hystrix断路器。

相反,您可以通过使用带Hystrix的Ribbon来实现它。 有一个名为AvailabilityFilteringRule的IRule用作默认值。它有自己的断路器,与hystrix无关。它将在某些秒内从实例列表中过滤出有问题的实例。您可以使用以下功能区属性调整此行为。

niws.loadbalancer.default.circuitTripTimeoutFactorSeconds (default 10secs)
niws.loadbalancer.default.connectionFailureCountThreshold  (default 3 failures)
niws.loadbalancer.default.circuitTripMaxTimeoutSeconds (default 30secs)

通过使用ribbon + hystrix,您可以实现如下所示的两级断路器。

  • 服务级别断路器 - hystrix
  • 实例级断路器 - 功能区(通过AvailabilityFilteringRule)

您可以找到有关此here

的一些说明