一. 對比常用的註冊中心
Consul、zookeeper、etcd、eureka、Nacos
Feature | Consul | Zookeeper | Etcd | Eureka | Nacos |
服務健康檢查 | 服務狀態,內存,硬盤等 | (弱)長連接,keepalive | 連接心跳 | 可配支持 | 傳輸層 (PING 或 TCP)和應用層 (如 HTTP、MySQL、用戶自定義)的健康檢查 |
多數據中心 | 支持 | — | — | — | 支持 |
kv存儲服務 | 支持 | 支持 | 支持 | — | 支持 |
CAP定理 | CP | CP | CP | AP | CP: 配置中心 AP: 註冊中心 |
使用接口 (多語言能力) |
支持http和dns | 客戶端 | http/grpc | http(sidecar) | Nacos 支持基於 DNS 和基於 RPC 的服務發現。服務提供者使用 原生SDK、OpenAPI、或一個獨立的Agent |
watch支持 | 全量/支持long polling | 支持 | 支持 long polling | 支持 long polling/大部分增量 | 支持 long polling/大部分增量 |
自身監控 | metrics | — | metrics | metrics | |
安全 | acl /https | acl | https支持(弱) | — | acl |
Spring Cloud集成 | 已支持 | 已支持 | 已支持 | 已支持 | 已支持 |
備註 | 可以作爲eureka的替代使用 | 2.0不在更新 | 1. 支持dubbo 2. spring-cloud-alibaba支持 |
二. 個人總結
springcloud中實現的註冊中心
1. 當項目數量少於1000時, 可以考慮 eureka 1.x ; 2.0版本官方不在維護
2. 使用最新的可以考慮使用 Consul, 使用Raft實現一致性的同時, 儘量保證可用, 支持 k8s
3. 使用dubbo, 可以使用 zookeeper、 nacos, 推薦使用 nacos
4. nacos是阿里來源的集配置中心和註冊中心與一體的, 新版本 AP 支持性能良好, 天然支持 dubbo
在 spring-cloud-alibaba 項目中, 很好的實現配置中心和註冊中心
支持 k8s、spring 系列、 docker 和 多註冊中心的同步
2.0 規劃 屏蔽 同步 k8s 和 spring 管理的差異、 支持 istio
5. 新項目可以使用 nacos