一. 对比常用的注册中心
Consul、zookeeper、etcd、eureka、Nacos
Feature |
Consul |
Zookeeper |
Etcd |
Eureka |
Nacos |
服务健康检查 |
服务状态,内存,硬盘等 |
(弱)长连接,keepalive |
连接心跳 |
可配支持 |
传输层 (PING 或 TCP)和应用层 (如 HTTP、MySQL、用户自定义)的健康检查 |
多数据中心 |
支持 |
— |
— |
— |
支持 |
kv存储服务 |
支持 |
支持 |
支持 |
— |
支持 |
一致性 |
Raft |
Paxos |
Raft |
— |
Raft |
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