2015-10-06 89 views
2

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

我有一个服务A,它叫服务B.服务B有2个实例,我检查,平衡工程 - 都被调用。但是当我停止其中一个时,有一段时间,我打电话给服务A时得到了错误页面 - 因为无法连接到B.

我有点期待,假装也有故障转移,所以A会自动尝试与其他B实例一起发现问题时。或者我必须直接实施它,例如Hystrix?

回答

0

Spring Cloud Netflix Feign使用Ribbon作为负载平衡器。您描述的情况特别针对Ribbon加上Eureka,而不是Feign。你是正确的,坏的实例将被缓存为30秒的默认值。您可以配置功能区以重试某些方法(然后请求剩余的优质服务器)。您还可以使用eureka.client.registryFetchIntervalSeconds=5缩短尤里卡/色带缓存的使用寿命(5秒钟而不是30秒)。

Hystrix有助于处理故障响应的故障回复,以及在系统故障时作为断路器)。

+0

感谢您的回答。我在这里没有提到它,但我确实使用eureka作为DS。这是我不太明白的另一个问题:尤里卡不承认自己,一个服务已经死了(因为服务不是ping尤里卡了),直到它明确地从尤里卡删除... 因此,当我看到它目前,一堆Eureka/Ribbon/Feign这样做对于一个案件来说不会有真正的弹性,一个服务不干净 - 系统仍然会尝试使用它,不会丢弃它。我们还必须执行一些额外的监控来清除Eureka提供的死亡服务(或者是否已经有这种服务?) – Tomasz

+0

Eureka具有自我保护模式,只要满足某些条件,它就会启动。这就是你所看到的。当有少量实例和只有一个尤里卡时,我会看到它。 – spencergibb