[英]Understanding Eureka Client Cache
我需要一些幫助,以了解為何在Eureka中注冊的服務盡管實際上並未運行,但仍希望彼此通信。 例如,我在尤里卡(Eureka)注冊了服務A和服務B。 如果我關閉服務B,則服務A仍會嘗試與服務B通信30秒到3分鍾,即使它沒有運行。 這樣做的目的是什么? 周圍有什么辦法嗎? 謝謝!
如您所知,Netflix正在運行大量基於Eureka的服務器實例。 因此,通過Eureka查找實例的開銷對於Netflix而言可能是巨大的開銷。 我想這就是Eureka具有緩存,輪詢間隔以及其他導致刷新實例狀態延遲的功能的原因。
幸運的是,您可以使用以下屬性來調整此延遲。
Eureka服務器 eureka.server.responseCacheUpdateInvervalMs
Eureka客戶端(API調用程序) eureka.client.registryFetchIntervalSeconds
Eureka客戶端(API提供商) eureka.instance.leaseExpirationDurationInSeconds
如果您正在運行的實例數量不是很多,通常可以減少上述屬性。
還有另一個與此延遲有關的屬性。
eureka.instance.leaseRenewalIntervalInSeconds
此屬性設置Eureka客戶端的心跳間隔。 它的默認值為30秒,但是您不能調整此值,因為Eureka服務器具有一些假定此時間段為30秒的硬編碼邏輯。
我相信您是指Eureka的自我保存模式。
這樣做的目的是什么?
自我保護模式旨在處理短期網絡故障。 實例注冊后,Eureka服務器將不會將實例永久保留在注冊表中。 當實例首次注冊時,它將為該實例設置租約續訂策略。 該策略包括實例在從注冊表中逐出之前可能會丟失多少個心跳。
當您運行多個Eureka服務器時,自我保存模式非常重要。
您可以瀏覽此 SO問題以獲取有關自我保存模式的更多詳細信息。
周圍有什么辦法嗎?
默認情況下啟用。 可以禁用它。
您還可以調整一些屬性,以確保盡快清除死實例。
請仔細閱讀上面鏈接的SO問題,以獲取有關調整哪些屬性的幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.