天天看點

springcloud(二) 注冊中心Eureka

介紹

--1 項目A調用項目B

--2 項目A調用項目B 項目B調用項目C

`Eureka`

`案例實踐`

`Eureka Server`

--1 pom中添加依賴

--2 在啟動代碼中添加`@EnableEurekaServer`注解

--3 配置檔案

`叢集`

`雙節點注冊中心`

--1 建立application-peer1.properties, 作為peer1服務中心的配置, 并将serviceUrl指向peer2

--2 建立application-peer2.properties,作為peer2服務中心的配置, 并将serivceUrl指向peer1

--3 host轉換 `在hosts檔案中加入如下配置`

--4 打包啟動 依次執行下面指令

erueka叢集的使用

服務中心也叫做注冊中心,管理各種服務功能包括服務的注冊、發現、熔斷、負載、降級等

有了服務中心調用關系會發生什麼變化,看一下下面幾個圖

–1 項目A調用項目B

正常調用項目A請求項目B

springcloud(二) 注冊中心Eureka

有了服務中心之後,任何一個服務都不能直接去調用,都需要通過服務中心來調用

springcloud(二) 注冊中心Eureka

–2 項目A調用項目B 項目B調用項目C

springcloud(二) 注冊中心Eureka

這個時候調用的步驟就會分為兩步:第一步,項目A首先從服務中心請求項目B伺服器,然後項目B在從服務中心請求項目C服務

springcloud(二) 注冊中心Eureka

Eureka是一個基于REST的服務, 主要在AWS雲中使用,定位服務來進行中間層伺服器的負載均衡和故障轉移

Spring Cloud 封裝了Nerflix公司開發的Eureka子產品來實作服務注冊和發現,Eureka采用了C-S的設計架構,EurekaServer作為服務注冊功能的伺服器, 它是服務注冊中心,而系統中的其他微服務,使用Eureka的用戶端連接配接到EurekaServer 并維持心跳連接配接,這樣系統的維護人員就可以通過EurekaServer 來監控系統中各個微服務是否正常運作 Spring Cloud的一些其他子產品比如(zuul)就可以通過EurekaServer來發現系統中的其他微服務,并執行相關的邏輯.

Eureka由兩個元件組成: Eureka伺服器和Eureka用戶端,Eureka伺服器用作服務注冊伺服器,Eureka用戶端是一個java用戶端,用來簡化與伺服器的互動、作為輪詢負載均衡器、并提供服務的故障切換支援, Netflix在其生産環境中使用的是另外的用戶端,它提供基于流量、資源使用率以及出錯狀态的權重負載均衡

springcloud(二) 注冊中心Eureka

–上圖簡要描述了Eureka的基本架構,由3個角色組成:

–Eureka Server

提供服務注冊和發現

–Service Provider

服務提供方

将自身服務注冊到Eureka, 進而使服務消費方能夠找到

–Service Consumer

服務消費方

從Eureka擷取注冊服務清單,進而能夠消費服務

spring cloud已經幫我們實作了服務注冊中心,我們主需要很簡單的幾個步驟就可以完成

–1 pom中添加依賴

–2 在啟動代碼中添加<code>@EnableEurekaServer</code>注解

–3 配置檔案

在預設設定下, 該服務注冊中心也會将自己作為用戶端來嘗試注冊它自己,是以我們需要警用它的用戶端注冊行為,在application.properties添加以下配置:

eureka.client.register-with-eureka :表示是否将自己注冊到Eureka Server,預設為true。

eureka.client.fetch-registry :表示是否從Eureka Server擷取注冊資訊,預設為true。

eureka.client.serviceUrl.defaultZone :設定與Eureka Server互動的位址,查詢服務和注冊服務都需要依賴這個位址。預設是http://localhost:8761/eureka ;多個位址可使用 , 分隔。

啟動工程後, 通路http://localhost:8000/ 可以看到下面的頁面, 其中還沒發現任何服務

springcloud(二) 注冊中心Eureka

注冊中心這麼關鍵的服務, 如果是單點的話,遇到故障就是毀滅性的, 在一個分布式系統中,服務注冊中心是最重要的基礎部分, 理應随時處于可以提供服務的狀态, 為了維持其可用性, 使用叢集是很好的解決方案,Eureka通過互相注冊的方式來實作高可用的部署, 是以我們隻需要将Eureka Server配置其他可用的serviceUrl就能實作高可用部署

首先我們嘗試一下雙節點的注冊中心的搭建

–2 建立application-peer2.properties,作為peer2服務中心的配置, 并将serivceUrl指向peer1

–3 host轉換 <code>在hosts檔案中加入如下配置</code>

–4 打包啟動 依次執行下面指令

依次啟動完成之後, 浏覽器輸入:http://localhost:8000/效果圖如下

springcloud(二) 注冊中心Eureka

根據圖可以看出peer1的注冊中心DS Replicas已經有了peer2的相關配置資訊,并且出現在available-replicas中,我們手動停止peer2來觀察,發現peer2就會移動到unavailable-replicas一欄中,表示peer2不可用

到此雙節點的配置已完成.

在生産中我們可能需要三台或者大于三台的注冊中心來保證服務的穩定性,配置的原理其實都一樣,将注冊中心分别指向其它的注冊中心。這裡隻介紹三台叢集的配置情況,其實和雙節點的注冊中心類似,每台注冊中心分别又指向其它兩個節點即可,使用application.yml來配置。

<code>application.yml</code>配置詳情如下:

分别以peer1、peer2、peer3的配置參數啟動eureka注冊中心。

依次啟動完成後,浏覽器輸入:http://localhost:8000/ 效果圖如下:

springcloud(二) 注冊中心Eureka

可以在peer1中看到了peer2、peer3的相關資訊。至此eureka叢集也已經完成了

繼續閱讀