【问题标题】:Spring Feign: FailoverSpring Feign:故障转移
【发布时间】:2016-01-03 08:02:24
【问题描述】:

我刚刚测试了 Spring Feign,发现没有即时故障转移机制。

我有一个服务 A,它调用服务 B。服务 B 有 2 个实例,我检查了,平衡工作 - 两者都被调用。但是当我停止其中一个时,有一段时间我在调用服务 A 时收到错误页面 - 因为无法与 B 连接。

我有点期待,feign 中也有故障转移,所以 A 会在发现问题时自动尝试其他 B 实例。还是我必须直接使用 Hystrix 来实现它?

【问题讨论】:

    标签: failover spring-cloud hystrix


    【解决方案1】:

    Spring Cloud Netflix Feign 使用 Ribbon 作为负载均衡器。您描述的情况是Ribbon 加上Eureka 所特有的,而不是Feign。您是正确的,坏实例将被缓存默认 30 秒。您可以配置功能区以重试某些方法(然后请求剩余的良好服务器)。您还可以使用 eureka.client.registryFetchIntervalSeconds=5 缩短 eureka/ribbon 缓存的生命周期(5 秒而不是 30 秒)。

    Hystrix 有助于处理故障响应的回退,并在出现系统故障时作为断路器)。

    【讨论】:

    • 感谢您的回答。我在这里没有提到它,但我确实使用 eureka 作为 DS。这是我不太了解的另一个问题:Eureka 无法识别自己,服务已死(因为服务不再 ping Eureka),直到它被明确地从 Eureka 中删除......所以正如我目前看到的那样,一个堆栈的 Eureka/Ribbon/Feign 这样做不会真正适应案例,服务不干净地关闭 - 系统仍会尝试使用它,不会丢弃它。而且我们必须实施一些额外的监控来从 Eureka 中删除死服务(或者已经有这样的服务了?)
    • Eureka 有一个自我保护模式,如果满足某些条件,它就会启动。这就是你所看到的。当实例数量很少且只有一个 eureka 时,我会看到它。
    猜你喜欢
    • 1970-01-01
    • 2020-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-06
    • 2012-07-13
    相关资源
    最近更新 更多