您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關Spring Cloud中如何使用Eureka集群搭建高可用服務注冊中心,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
這一篇主要介紹一下如何搭建一個高可用的 Eureka 集群。
1. 分布式和集群有啥區別?
可能有很多人對分布式和集群這兩個概念有點混淆。我先用通俗易懂的話給大家解釋下:
分布式:一個業務分拆多個子業務,部署在不同的服務器上
集群:同一個業務,分別部署在不同的服務器上
所以分布式的每一個節點,完成的是不同的業務,一個節點掛了,那么這個業務功能就無法訪問了,甚至可能會影響到其他業務。而集群是一個比較有組織的架構,正因為有組織性,一個服務節點掛了,其他服務節點可以頂上來,從而保證了服務的健壯性。
所以說,集群可以理解為:你中有我,我中有你,手拉手肩并肩,一起保證服務的健壯性。
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 集群呢?假設現在有三個 Eureka 服務:eureka7001、eureka7002 和 eureka7003。
為了體現出集群的你中有我,我中有你,不難想象,eureka7001 中應該掛上 eureka7002 和 eureka7003;eureka7002 中應該掛上 eureka7001 和 eureka7003;eureka7003 中應該掛上 eureka7001 和 eureka7002。如下圖所示:
這樣就搭建好了一個 Eureka 集群了,那么我們如何去實現呢?接下來就落實到具體實現方式。
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,現在三個 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 注冊中心,那么現在有三個了,我們需要修改下配置,將訂單服務注冊到三個 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集群搭建高可用服務注冊中心有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。