Spring Cloud - Nacos與Eureka區別及如何選型
阿新 • • 發佈:2022-03-14
acos與Eureka均提供註冊中心和服務治理功能,以下為兩者差異和選型方案。
功能差異
模組 | Nacos | Eureka | 說明 |
---|---|---|---|
註冊中心 | 是 | 是 | 服務治理基本功能,負責服務中心化註冊 |
配置中心 | 是 | 否 |
Eureka需要配合Config實現配置中心,且不提供管理介面 |
動態重新整理 | 是 | 否 |
Eureka需要配合MQ實現配置動態重新整理,Nacos採用Netty保持TCP長連線實時推送 |
可用區AZ | 是 | 是 | 對服務叢集劃分不同區域,實現區域隔離,並提供容災自動切換 |
分組 | 是 | 否 |
Nacos可用根據業務和環境進行分組管理 |
元資料 | 是 | 是 | 提供服務標籤資料,例如環境或服務標識 |
權重 | 是 | 否 |
Nacos預設提供權重設定功能,調整承載流量壓力 |
健康檢查 | 是 | 是 | Nacos支援由客戶端或服務端發起的健康檢查,Eureka是由客戶端發起心跳 |
負載均衡 | 是 | 是 | 均提供負責均衡策略,Eureka採用Ribion |
管理介面 | 是 | 否 |
Nacos支援對服務線上管理,Eureka只是預覽服務狀態 |
部署安裝
模組 | Nacos | Eureka | 說明 |
---|---|---|---|
MySql | 是 | 否 |
Nacos需要採用MySql進行資料進行持久化 |
MQ | 否 |
是 | Eureka需要採用MQ進行配置中心重新整理 |
配置中心 | 是 | 否 |
Eureka結合Config或者Consul實現配置中心 |
配置檔案 | 線上編輯 | 本地檔案或者Git遠端檔案 | Eureka結合Config或者Consul |
叢集 | 是 | 是 | Nacos需要配置叢集ip再啟動 |
穩定及擴充套件性
模組 | Nacos | Eureka | 說明 |
---|---|---|---|
版本 | 1.0.0 | 1.9.9 | Eureka2.0已停止開發,Nacos處於1.x-2.0開發 |
廠商 | 阿里巴巴 | Netflix | Netflix已長期用於生產,阿里剛起步 |
生產建議 | 否 |
是 | Nacos0.8以前不可用於生產,建議生產採用Nacos1.0,便於節省配置中心叢集和服務管理 |
未來發展 | 是 | 否 |
Nacos 2.0主要關注在統一服務管理、服務共享及服務治理體系的開放的服務平臺的建設 |
選型建議
採用Eureka方案的考慮
- 想用Spring Cloud原生全家桶
- 想用本地檔案和Git作為配置管理的,將配置與服務分開管理
- 考慮短期的穩定性
採用Nacos方案的考慮
- 想線上對服務進行上下線和流量管理
- 不想採用MQ實現配置中心動態重新整理
- 不想新增配置中心生產叢集
- 考慮引入Spring Cloud Alibaba生態