【Spring Cloud】Eureka實現微服務釋出與呼叫

好好生活_發表於2019-01-31

【學習背景】

在此之前,轉載了一篇關於Spring Cloud的概述博文,《大話Spring Cloud》,其中關於Spring Cloud整個框架的結構和內容都總結的很詳細。本篇部落格將自己總結下微服務架構下服務管理中的註冊中心Eureka。

【學習內容】

  1. 關於Eureka

Eureka提供基於REST的服務,在叢集中主要用於服務管理。Eureka 提供了基於 Java語言的客戶端元件,客戶端元件實現了負載均衡的功能,為業務元件的叢集部署創造了條件。使用該框架, 可以將業務元件註冊到 Eureka 容器中, 進行叢集部署, Eureka 提供的服務呼叫功能, 可以釋出容器中的服務並進行呼叫。

  1. Eureka架構

一個簡單的 Eureka 叢集, 需要有一個 Eureka 伺服器、 若干個服務提供者。 我們可以將業務元件註冊到 Eureka 伺服器中, 其他客戶端元件可以向伺服器獲取服務並且進行遠端呼叫。架構圖如下:

在這裡插入圖片描述

上圖中,有兩個伺服器,伺服器支援叢集部署,每個伺服器也可以作為對方伺服器的客戶端進行相互註冊和複製。上圖中包含三個Eureka客戶端,兩個用於釋出服務,一個用於服務呼叫,不論是伺服器還是客戶端,都可以部署多個例項。

  1. 伺服器端

對於註冊到伺服器端的服務元件, Eureka 伺服器並沒有提供後臺的儲存, 這些註冊的服務例項被儲存在記憶體的註冊中心, 它們通過心跳來保持其最新狀態, 這些操作都可以在記憶體中完成。 客戶端存在著相同的機制, 同樣在記憶體中儲存了登錄檔資訊, 這樣的機制提升了Eureka 元件的效能, 每次服務的請求都不必經過伺服器端的註冊中心。

  1. 服務提供者

作為 Eureka 客戶端存在的服務提供者, 主要進行以下工作: 第一、 向伺服器註冊服務;第二、 傳送心跳給伺服器; 第三、 向伺服器端獲取註冊列表。 當客戶端註冊到伺服器時, 它將會提供一些關於它自己的資訊給伺服器端, 例如自己的主機、 埠、 健康檢測連線等。

  1. 服務呼叫者

對於釋出到 Eureka 伺服器的服務, 使用呼叫者可對其進行服務查詢與呼叫, 服務呼叫者也是作為客戶端存在, 但其職責主要是發現與呼叫服務。 在實際情況中, 有可能出現本身既是服務提供者, 也是服務呼叫者的情況, 例如傳統的企業應用三層架構中, 服務層會呼叫資料訪問層的介面進行資料操作, 它本身也會提供服務給控制層使用。

【學習demo】

在學習過程中,自己也搭建了相關例項,基於Spring Boot 2.1版本,Spring Cloud 版本為:Greenwich.RC1,不同的版本,對應的依賴可能不同,所以在搭建的過程中,版本資訊還是值得注意一下。

訪問地址:https://github.com/huzhiting/spring-cloud

在後面的學習中也會繼續更新例項程式碼。

【學習總結】

Spring Cloud 是現在很多公司首選的微服務架構之一,而我們公司只是單純地用Spring Boot做了幾個簡單地單獨應用,所以趁著假期,自己學習一下Spring Cloud相關知識,增加些知識儲備。

相關文章