社交電商平臺源碼請加企鵝求求:一零三八七七四六二六。 Eureka是基於REST(Representational State Transfer)服務,主要以AWS雲服務爲支撐,提供服務發現並實現負載均衡和故障轉移。咱們稱此服務爲Eureka服務。Eureka提供了Java客戶端組件,Eureka Client,方便與服務端的交互。客戶端內置了基於round-robin實現的簡單負載均衡。在Netflix,爲Eureka提供更爲複雜的負載均衡方案進行封裝,以實現高可用,它包括基於流量、資源利用率以及請求返回狀態的加權負載均衡。緩存
在AWS雲,因爲其天生的特性,服務器按需進行彈性伸縮。不像傳統的負載均衡是基於固定的IP地址和host來實現,在AWS中,則須要提供更爲複雜的負載均衡方案,以便對服務器進行註冊和註銷。因爲AWS並未提供中間層負載均衡方案,Eureka的出世便填補了這個領域的巨大空白。服務器
Eureka架構網絡
Eureka架構圖是來自Eureka官方的架構圖,大體描述了Eureka集羣的工做過程。圖中包含的組件很是多,可能比較難以理解,咱們用通俗易懂的語言解釋一下:架構
Eureka Server爲服務註冊中心,經過Replicate進行數據同步負載均衡
Application Service 爲服務提供者,微服務
Application Client爲服務消費者;cdn
Make Remote Call,完成一次服務調用,能夠簡單理解爲調用RESTful API;blog
由圖可知,Eureka包含兩個組件:Eureka Server 和 Eureka Client,它們的做用以下:資源
Eureka Client是一個Java客戶端,用於簡化與Eureka Server的交互;同步
Eureka Server提供服務發現的能力,各個微服務啓動時,會經過Eureka Client向Eureka Server進行註冊本身的信息(例如網絡信息),Eureka Server會存儲該服務的信息;
微服務啓動後,會週期性地向Eureka Server發送心跳(默認週期爲30秒)以續約本身的信息。若是EurekaServer在必定時間內沒有接收到某個微服務節點的心跳,Eureka Server將會註銷該微服務節點(默認90秒);
每一個Eureka Server同時也是Eureka Client,多個Eureka Server之間經過複製的方式完成服務註冊表的同步;
Eureka Client會緩存Eureka Server中的信息。即便全部的Eureka Server節點都宕掉,服務消費者依然可使用緩存中的信息找到服務提供者。
綜上,Eureka經過心跳檢測、健康檢查和客戶端緩存,以及服務之間的數據同步等機制,提升了系統的靈活性、可伸縮性和可用性。(客戶端與服務端的鏈接是信息註冊哦,不是實際的鏈接,註銷針對的是註冊信息不是鏈接)