Eureka Server 實現(xiàn)在線擴容作者:Grey
原文地址:
博客園:Eureka Server 實現(xiàn)在線擴容
CSDN:Eureka Server 實現(xiàn)在線擴容
需求【Eureka Server 實現(xiàn)在線擴容】Eureka 是 Spring Cloud Netflix 套件中的服務(wù)注冊中心組件,作為微服務(wù)的核心組件,需要支持在線擴容的需求 。
本示例模擬 Eureka 從單實例在線擴容到三個實例的過程 。
環(huán)境Java 版本:17
Spring Boot 版本:2.7.5
Spring Cloud 版本:2021.0.4
項目結(jié)構(gòu)和說明
- eureka-scale-out-online:父項目名稱
- server : 服務(wù)端模塊
- src/
- pom.xml
- client : 客戶端模塊
- src/
- pom.xml
- config : 配置中心模塊,使用本地配置
- src/
- pom.xml
- pom.xml:父項目 pom 配置
- server : 服務(wù)端模塊
完整代碼見:Github
單個 Eureka 實例將 config 項目中的 eureka-client.yml 修改為
server:port: 8081spring:application:name: eureka-client1eureka:client:serviceUrl:defaultZone: http://localhost:8761/eureka/將 config 項目中的 eureka-server-peer1.yml 修改為server:port: 8761spring:application:name: eureka-servereureka:instance:hostname: localhostpreferIpAddress: trueclient:registerWithEureka: truefetchRegistry: trueserviceUrl:defaultZone: http://localhost:8761/eureka/server:waitTimeInMsWhenSyncEmpty: 0enableSelfPreservation: false依次啟動 config 模塊(運行 ConfigStartApp.java 這個類),server 模塊(運行 ServerStartApp.java 這個類),client 模塊(運行 ClientStartApp.java 這個類),注:server 模塊在啟動過程中,需要指定 peer1 這個配置文件 。

文章插圖
啟動完畢后,可以通過瀏覽器訪問:http://localhost:8761/
看到目前的服務(wù)注冊情況

文章插圖
目前 Eureka Server 只有一個實例 。
在線擴充到兩個 Eureka 實例保持上述運行環(huán)境,先不做任何重啟動作,由于要增加一個實例,所以將 config 項目中的 eureka-server-peer2.yml 修改為
server:port: 8762eureka:instance:hostname: localhostpreferIpAddress: trueclient:registerWithEureka: truefetchRegistry: trueserviceUrl:defaultZone: http://localhost:8761/eureka/server:waitTimeInMsWhenSyncEmpty: 0enableSelfPreservation: false同時,把 eureka-server-peer1.yml 內(nèi)容調(diào)整為server:port: 8761spring:application:name: eureka-servereureka:instance:hostname: localhostpreferIpAddress: trueclient:registerWithEureka: truefetchRegistry: trueserviceUrl:defaultZone: http://localhost:8762/eureka/server:waitTimeInMsWhenSyncEmpty: 0enableSelfPreservation: false客戶端需要感知到兩個 Eureka Server 的存在,所以,也要修改 內(nèi)容為server:port: 8081spring:application:name: eureka-client1eureka:client:serviceUrl:defaultZone: http://localhost:8761/eureka/,http://localhost:8762/eureka/配置修改完畢后,首先,重啟 config 模塊(注:由于配置的是 native 模式,需要重啟,如果用 Git 托管,則無須重啟)
然后啟動 server peer2 實例,啟動時做如下配置

文章插圖
接下來,使用 Eureka 的管理 API,將 client 模塊實例和 server peer1 實例的配置進行熱更新,操作如下
使用命令行或者 Postman 工具,發(fā)送如下請求
經(jīng)驗總結(jié)擴展閱讀
- React實現(xiàn)一個簡易版Swiper
- 四十七 SpringCloud微服務(wù)實戰(zhàn)——搭建企業(yè)級開發(fā)框架:【移動開發(fā)】整合uni-app搭建移動端快速開發(fā)框架-添加Axios并實現(xiàn)登錄功能
- 二 SpringCloud - Eureka注冊中心,feign遠程調(diào)用,hystrix降級和熔斷
- 【Serverless】云函數(shù)微信小程序
- 二 京東云開發(fā)者| Redis數(shù)據(jù)結(jié)構(gòu)-List、Hash、Set及Sorted Set的結(jié)構(gòu)實現(xiàn)
- 一 Redis數(shù)據(jù)結(jié)構(gòu)-Redis的數(shù)據(jù)存儲及String類型的實現(xiàn)
- Springboot 一行代碼實現(xiàn)文件上傳 20個平臺!少寫代碼到極致
- C#實現(xiàn)生成Markdown文檔目錄樹
- 利用inotify和rsync服務(wù)實現(xiàn)數(shù)據(jù)實時同步
- OpenAPI 接口冪等實現(xiàn)
