【问题标题】:Hystrix to open circuit for problematic service instances?Hystrix 为有问题的服务实例开路?
【发布时间】:2018-03-27 20:16:29
【问题描述】:

假设以下场景:

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

有什么方法可以配置 Hystrix 将电路翻转到实例级别?

【问题讨论】:

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


    【解决方案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的描述

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-15
      • 2017-05-29
      • 2019-03-19
      • 2014-06-08
      • 2011-04-30
      • 2018-09-11
      相关资源
      最近更新 更多