Spring Cloud - Eureka的真情獨白

在這裏插入圖片描述

一.什麼是Eureka?

Eureka 是一個基於 REST (REST)的服務,主要用於 AWS 雲中定位服務,用於中間層服務器的負載平衡和故障轉移。 我們稱這個服務爲 Eureka 服務器。 Eureka 還帶有一個基於 java 的客戶機組件—— Eureka Client,它使得與服務的交互更加容易。 客戶機還有一個內置的負載平衡器,可以進行基本的循環負載平衡。 在 Netflix,一個更加複雜的負載平衡器包裝了 Eureka 來提供基於諸如流量、資源使用、錯誤條件等因素的加權負載平衡,以提供更好的彈性。Eureka是基於REST(Representational State Transfer)服務,主要以AWS雲服務爲支撐,提供服務發現並實現負載均衡和故障轉移。我們稱此服務爲Eureka服務。Eureka提供了Java客戶端組件,Eureka Client,方便與服務端的交互。客戶端內置了基於round-robin實現的簡單負載均衡。在Netflix,爲Eureka提供更爲複雜的負載均衡方案進行封裝,以實現高可用,它包括基於流量、資源利用率以及請求返回狀態的加權負載均衡。

二.Eureka需要什麼?

在 AWS 雲中,由於其固有的特性,服務器來了又走。 與傳統的負載均衡器不同,傳統的負載均衡器與 IP 地址和主機名衆所周知的服務器一起工作,在 AWS 中,負載均衡需要在動態的負載均衡器上對服務器進行更復雜的註冊和去註冊。 由於 AWS 尚未提供中間層負載均衡器,因此 Eureka 填補了中間層負載均衡領域的一大空白。

三.我應該什麼時候使用 Eureka

您通常運行在 AWS 雲中,並且擁有大量中間層服務,不希望在 AWS ELB 註冊或者暴露來自外部世界的流量。 您要麼正在尋找一個簡單的循環式負載平衡解決方案,要麼願意根據您的負載平衡需求爲 Eureka 編寫自己的包裝器。 您不需要在外部緩存(如 memcached)中使用粘貼會話和加載會話數據。 更重要的是,如果您的體系結構適合基於客戶端的負載均衡器最受青睞的模型,那麼 Eureka 就能很好地適應這種用法。

四.應用程序客戶機和應用程序服務器如何通信?

通信技術可以是任何你喜歡的東西。 Eureka 可以幫助您找到有關您想要與之通信的服務的信息,但不會對通信協議或方法施加任何限制。 例如,您可以使用 Eureka 獲得目標服務器地址,並使用諸如 thrift、 http (s)或任何其他 RPC 機制之類的協議。

五.高級體系結構

在這裏插入圖片描述

上面的體系結構描述了在 Netflix 中 Eureka 是如何部署的,以下是典型的運行方式。 每個區域有一個Eureka 集羣,它只知道其區域的個實例。 每個區域至少有一個 Eureka 服務器來處理區域故障。

這些服務在Eureka註冊,然後每30秒發送心跳信號續簽租約。 如果客戶端不能續約幾次,則會在大約90秒內將其從服務器註冊表中刪除。 註冊信息和更新被複制到集羣中的所有 eureka 節點。 來自任何區域的客戶機都可以查找註冊表信息(每30秒發生一次)來定位他們的服務(可能位於任何區域)並進行遠程調用。

更多內容閱讀Eureka at a glance

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章