1. 程式人生 > >Spring Cloud學習筆記之Eureka框架的原理

Spring Cloud學習筆記之Eureka框架的原理

Eureka
服務發現與註冊:我們在呼叫微服務的時候,如果我們的微服務部署了多份,我們應該如何去呼叫?這裡就涉及到了服務發現與註冊。服務發現就是程式如何通過一個標誌來獲取服務列表,並且這個服務列表是能夠隨著服務的狀態而動態變更的。
在這裡插入圖片描述
Spring Cloud提供了多種註冊中心的支援:如Eureka、consul、Zookeeper等,推薦使用Eureka。Spring Cloud Eureka是Spring Cloud Netflix微服務套件中的一部分,它基於Netflix,Eureka做了二次封裝。主要負責完成微服務架構中的服務治理功能。原理圖如下所示:
在這裡插入圖片描述
Server是服務端,Client是客戶端,其中Eureka Server是一個Eureka的叢集,作為註冊中心,服務提供方將服務提交給註冊中心,服務消費者從註冊中心獲取服務資訊,進行呼叫。

Eureka是Netflix開發的服務發現框架,本身是一個基於REST的服務,主要用於定位執行在AWS域中的中間層服務,以達到負載均衡和中間層服務故障轉移的目的。SpringCloud將它整合在其子專案spring-cloud-netflix中,以實現SpringCloud的服務發現功能。
Eureka包含兩個元件:Eureka Server和Eureka Client。
Eureka Server提供服務註冊服務,各個節點啟動後,會在Eureka Server中進行註冊,這樣EurekaServer中的服務登錄檔中將會儲存所有可用服務節點的資訊,服務節點的資訊可以在介面中直觀的看到。
Eureka Client是一個java客戶端,用於簡化與Eureka Server的互動,客戶端同時也就別一個內建的、使用輪詢(round-robin)負載演算法的負載均衡器。
在應用啟動後,將會向Eureka Server傳送心跳,預設週期為30秒,如果Eureka Server在多個心跳週期內沒有接收到某個節點的心跳,Eureka Server將會從服務登錄檔中把這個服務節點移除(預設90秒)。
Eureka Server之間通過複製的方式完成資料的同步,Eureka還提供了客戶端快取機制,即使所有的Eureka Server都掛掉,客戶端依然可以利用快取中的資訊消費其他服務的API。綜上,Eureka通過心跳檢查、客戶端快取等機制,確保了系統的高可用性、靈活性和可伸縮性。