溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Spring Cloud中如何使用Eureka集群搭建高可用服務注冊中心

發(fā)布時間:2021-12-13 10:59:46 來源:億速云 閱讀:488 作者:柒染 欄目:大數(shù)據

今天就跟大家聊聊有關Spring Cloud中如何使用Eureka集群搭建高可用服務注冊中心,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

這一篇主要介紹一下如何搭建一個高可用的 Eureka 集群。

1. 分布式和集群有啥區(qū)別?

可能有很多人對分布式和集群這兩個概念有點混淆。我先用通俗易懂的話給大家解釋下:

分布式:一個業(yè)務分拆多個子業(yè)務,部署在不同的服務器

集群:同一個業(yè)務,分別部署在不同的服務器上

所以分布式的每一個節(jié)點,完成的是不同的業(yè)務,一個節(jié)點掛了,那么這個業(yè)務功能就無法訪問了,甚至可能會影響到其他業(yè)務。而集群是一個比較有組織的架構,正因為有組織性,一個服務節(jié)點掛了,其他服務節(jié)點可以頂上來,從而保證了服務的健壯性。

所以說,集群可以理解為:你中有我,我中有你,手拉手肩并肩,一起保證服務的健壯性。

2. Eureka集群邏輯

在搭建 Eureka 集群之前,先來回顧一下前面搭建的單個 Eureka 服務,看下 yml 配置文件:

server:
 port: 7001

eureka:
 instance:
   #eureka服務端的實例名稱
   hostname: eureka01
 client:
   # false表示不向注冊中心注冊自己
   register-with-eureka: false
   # false表示自己端就是注冊中心,我的職責就是維護服務實例,并不需要去檢索服務
   fetch-registry: false
   service-url:
     #設置與Eureka Server交互的地址查詢服務和注冊服務都需要依賴這個地址(單機)。
     defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

這是一個 Eureka 服務,名稱是 eureka7001, 注冊中心是它自己的。那么我們如何去搭建一個 Eureka 集群呢?假設現(xiàn)在有三個 Eureka 服務:eureka7001、eureka7002 和 eureka7003。

為了體現(xiàn)出集群的你中有我,我中有你,不難想象,eureka7001 中應該掛上 eureka7002 和 eureka7003;eureka7002 中應該掛上 eureka7001 和 eureka7003;eureka7003 中應該掛上 eureka7001 和 eureka7002。如下圖所示:

Spring Cloud中如何使用Eureka集群搭建高可用服務注冊中心

這樣就搭建好了一個 Eureka 集群了,那么我們如何去實現(xiàn)呢?接下來就落實到具體實現(xiàn)方式。

3. Eureka7001的改造

由上面的分析可知,Eureka7001 需要掛上 Eureka7002 和 Eureka7003,所以在 Eureka7001 的配置文件中需要重新配置一下 defaultZone,如下:

server:
 port: 7001

eureka:
 instance:
   #eureka服務端的實例名稱
   hostname: eureka01
 client:
   # false表示不向注冊中心注冊自己
   register-with-eureka: false
   # false表示自己端就是注冊中心,我的職責就是維護服務實例,并不需要去檢索服務
   fetch-registry: false
   service-url:
     defaultZone: http://eureka02.com:7002/eureka/,http://eureka03.com:7003/eureka/

OK,defaultZone 配置好了 eureka7002 和 eureka 7003。

4. 搭建Eureka7002

以同樣的方式,拷貝一份 Eureka7001 的工程,修改其配置文件:

server:
 port: 7002

eureka:
 instance:
   #eureka服務端的實例名稱
   hostname: eureka02
 client:
   # false表示不向注冊中心注冊自己
   register-with-eureka: false
   # false表示自己端就是注冊中心,我的職責就是維護服務實例,并不需要去檢索服務
   fetch-registry: false
   service-url:
     defaultZone: http://eureka01.com:7001/eureka/,http://eureka03.com:7003/eureka/

可以看出,在 eureka7002 中,把 eureka7001 和 eureka7003 掛進來。

5. 搭建Eureka7003

以相同的方式,把 eureka7003 也搭建好。

server:
 port: 7003

eureka:
 instance:
   #eureka服務端的實例名稱
   hostname: eureka03
 client:
   # false表示不向注冊中心注冊自己
   register-with-eureka: false
   # false表示自己端就是注冊中心,我的職責就是維護服務實例,并不需要去檢索服務
   fetch-registry: false
   service-url:
     defaultZone: http://eureka01.com:7001/eureka/,http://eureka02.com:7002/eureka/

ok,現(xiàn)在三個 eureka 注冊中心都搭建好了,最后別忘了在本地 hosts 文件中將 eureka7001、eureka7002 和 eureka7003 映射到 127.0.0.1。

6. 修改訂單服務

我們首先來回憶下,之前的訂單服務提供方的配置文件是怎么寫的:

# 客戶端注冊進eureka服務列表里
eureka:
 client:
   service-url:
     defaultZone: http://eureka01:7001/eureka/
 instance:
   instance-id: 書籍訂單服務-8001  # 人性化顯示出服務的信息
   prefer-ip-address: true    # 訪問路徑可顯示ip地址

是將訂單服務注冊到 eureka7001 中,因為之前就這一個 eureka 注冊中心,那么現(xiàn)在有三個了,我們需要修改下配置,將訂單服務注冊到三個 eureka 中。

# 客戶端注冊進eureka服務列表里
eureka:
 client:
   service-url:
     defaultZone: http://eureka01:7001/eureka/,http://eureka02:7002/eureka/,http://eureka03:7003/eureka/
 instance:
   instance-id: 書籍訂單服務-8001  # 人性化顯示出服務的信息
   prefer-ip-address: true    # 訪問路徑可顯示ip地址

7. 測試效果

OK,所有搭建步驟都完成了,接下來分別啟動一下 eureka7001、eureka7002 和 eureka7003,再啟動下訂單提供服務。然后我們可以分別訪問下三個 eureka 注冊中心,看一下結果。我以訪問 eureka7001 為例,可以看到該服務中心掛著 eureka7002 和 eureka7003,而且訂單服務也成功注冊到該注冊中心。

Spring Cloud中如何使用Eureka集群搭建高可用服務注冊中心


看完上述內容,你們對Spring Cloud中如何使用Eureka集群搭建高可用服務注冊中心有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業(yè)資訊頻道,感謝大家的支持。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI