Nacos和Eureka並存方案
1.背景
平臺現有Spring Cloud Edgware.SR3版本,依賴Spring Boot 1.5.13.RELEASE,因Spring Cloud原生服務註冊中心(Eureka)功能較弱,需切換到Nacos上,並集成流量控制組件(Sentinel),短期內兩個註冊中心並存,遠期Nacos替換掉Eureka。
2.約束(Eureka和Nacos版本,需要實現的需求)
1.版本
Spring Cloud Version |
Spring Boot Version |
Spring Cloud Alibaba Version |
Nacos Client Version |
Sentinel Version |
Edgware |
1.5.X.RELEASE |
1.5.1.RELEASE |
1.1.4 |
1.7.0 |
Finchley |
2.0.X.RELEASE |
2.0.2.RELEASE |
1.2.1 |
1.7.1 |
Greenwich |
2.1.X.RELEASE |
2.1.2.RELEASE |
1.2.1 |
1.7.1 |
Hoxton |
2.2.5.RELEASE |
2.2.2.RELEASE |
1.3.2 |
1.8.0 |
2.上線需求
- 兩者並存時naocs能從eureka主動讀取服務註冊列表,並刷新自身服務註冊列表。
- nacos允許服務直接註冊進來。
- 普通服務需改造,可以同時向nacos和eureka註冊。
3.落地方案預演
- 改造nacos,支持主動拉取eureka服務註冊列表,以心跳方式30s(可設置)拉取一次
- 普通服務集成nacos註冊中心,主動註冊。
- zuul-gateway切換到nacos上,不在讀取eureka服務註冊列表
4.預演環境
4.1. 預演方案
服務 |
備註 |
|
eureka-server |
eurkea註冊中心 |
|
nacos-server |
nacos註冊中心 |
|
nacos-sync |
eureka和nacos通信服務 |
|
a-service |
模擬註冊到eureka,並驗證切換到nacos,並驗證斷掉eureka |
|
b-service |
模擬註冊到eureka和nacos上,並驗證斷掉eureka |
|
c-service |
模擬註冊到nacos上 |
|
-
綠色的箭頭表示已經驗證通過的功能,藍色箭頭表示驗證不通過功能
-
zuul-gateway調用API:
http://localhost:52001/a-service/test1 http://localhost:52002/b-service/test1 http://localhost:52003/c-service/test1
http://localhost:51001/a-service/test1 http://localhost:51001/b-service/test1 http://localhost:51001/c-service/test1