【consul、eureka、nacos異同點】

配置中心

  • eureka 不支持
  • consul 支持,但用起來偏麻煩,不太符合springBoot框架的命名風格,支持動態刷新
  • nacos 支持,用起來簡單,符合springBoot的命名風格,支持動態刷新

註冊中心

1.eureka:spring

  • 應用內/外:直接集成到應用中,依賴於應用自身完成服務的註冊與發現
  • ACP原則:遵循AP(可用性+分離容忍)原則,有較強的可用性,服務註冊快,但犧牲了必定的一致性。
  • 版本迭代:目前已經不進行升級
  • 集成支持:只支持SpringCloud集成
  • 訪問協議:HTTP 雪崩保護:支持雪崩保護
  • 界面:英文界面,不符合國人習慣 上手:容易
  1. consul:
  • 應用內/外:屬於外部應用,侵入性小
  • ACP原則:遵循CP原則(一致性+分離容忍) 服務註冊稍慢,因爲其一致性致使了在Leader掛掉時從新選舉期間真個consul不可用。
  • 版本迭代:目前仍然進行版本迭代
  • 集成支持:支持SpringCloud K8S集成
  • 訪問協議:HTTP/DNS
  • 雪崩保護:不支持雪崩保護
  • 界面:英文界面,不符合國人習慣
  • 上手:複雜一點
  1. nacos:
  • 應用內/外:屬於外部應用,侵入性小
  • ACP原則:通知遵循CP原則(一致性+分離容忍) 和AP原則(可用性+分離容忍)
  • 版本迭代:目前仍然進行版本迭代
  • 集成支持:支持Dubbo 、SpringCloud、K8S集成
  • 訪問協議:HTTP/動態DNS/UDP
  • 雪崩保護:支持雪崩保護
  • 界面:中文界面,符合國人習慣
  • 上手:極易,中文文檔,案例,社區活躍

功能差別

模塊 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須要配合MQ實現配置動態刷新,Nacos採用Netty保持TCP長鏈接實時推送
配置中心 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生態
相關文章
相關標籤/搜索