2015-10-06 143 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