簡體   English   中英

了解Eureka客戶端緩存

[英]Understanding Eureka Client Cache

我需要一些幫助,以了解為何在Eureka中注冊的服務盡管實際上並未運行,但仍希望彼此通信。 例如,我在尤里卡(Eureka)注冊了服務A和服務B。 如果我關閉服務B,則服務A仍會嘗試與服務B通信30秒到3分鍾,即使它沒有運行。 這樣做的目的是什么? 周圍有什么辦法嗎? 謝謝!

如您所知,Netflix正在運行大量基於Eureka的服務器實例。 因此,通過Eureka查找實例的開銷對於Netflix而言可能是巨大的開銷。 我想這就是Eureka具有緩存,輪詢間隔以及其他導致刷新實例狀態延遲的功能的原因。

幸運的是,您可以使用以下屬性來調整此延遲。

  • Eureka服務器 eureka.server.responseCacheUpdateInvervalMs

    • 30秒。 Eureka服務器的API具有自己的緩存來響應。 默認是很大的時期。 您可以降低此值。
  • Eureka客戶端(API調用程序) eureka.client.registryFetchIntervalSeconds

    • 30秒。 Eureka客戶端會定期從Eureka服務器獲取實例狀態。 您可以降低此值。
  • Eureka客戶端(API提供商) eureka.instance.leaseExpirationDurationInSeconds

    • 90秒 注冊到Eureka服務器的每個實例都可以為其設置到期時間。 如果Eureka服務器在此期間未從Eureka客戶端收到任何心跳信號,則該實例將過期。 默認情況下,每個Eureka客戶端每30秒發送一次心跳。

如果您正在運行的實例數量不是很多,通常可以減少上述屬性。

還有另一個與此延遲有關的屬性。

  • eureka.instance.leaseRenewalIntervalInSeconds

此屬性設置Eureka客戶端的心跳間隔。 它的默認值為30秒,但是您不能調整此值,因為Eureka服務器具有一些假定此時間段為30秒的硬編碼邏輯。

我相信您是指Eureka的自我保存模式。

這樣做的目的是什么?

自我保護模式旨在處理短期網絡故障。 實例注冊后,Eureka服務器將不會將實例永久保留在注冊表中。 當實例首次注冊時,它將為該實例設置租約續訂策略。 該策略包括實例在從注冊表中逐出之前可能會丟失多少個心跳。

當您運行多個Eureka服務器時,自我保存模式非常重要。

您可以瀏覽 SO問題以獲取有關自我保存模式的更多詳細信息。

周圍有什么辦法嗎?

默認情況下啟用。 可以禁用它。

您還可以調整一些屬性,以確保盡快清除死實例。

請仔細閱讀上面鏈接的SO問題,以獲取有關調整哪些屬性的幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM