最近一年来一直在关注微服务系列,而它必不可缺少的组件就是注册中心。目前市面上辣么可以作为注册中心组件,那该如何选型?
| 特性 | Consul | zooKeeper | etcd | eureka |
| 编写语言 | go | Java | go | java |
| 客户端支持 | http, dns | 跨语言弱,Curator组件 | http, Etcd3支持grpc | http, 非java(sidecar) |
| 多数据中心 | 支持 |
|
|
|
| KV存储 | 支持 | 支持 | 支持 |
|
| 健康检查 | 服务状态、内存、硬盘等 | (弱)长连接,keepalive | 连接心跳 | 可配支持 |
| watch支持 | 全量/支持长轮询 | 支持 | 支持长轮询 | 支持长轮询, Eureka 2.0(正在开发中)也计划支持 |
| 自身监控 | metrics |
| metrics | metrics |
| 安全 | acl /https | acl | https支持(弱) |
|
| 一致性算法 | raft | paxos | raft |
|
| CAP理论 | CP | CP(牺牲可用性) | CP(牺牲可用性) | AP(一致性弱) |
| spring cloud | 已支持 | 已支持 | 已支持 | 已支持 |
结论:总的来看,目前Consul 自身功能,和 spring cloud 对其集成的支持都相对较为完善,而且运维的复杂度较为简单(对docker集成性更好,使用Docker registrator可以基于容器发现及注册,而且对nginx的支持性也较好),Eureka 设计上比较符合场景,但还需持续的完善。
本文对比了Consul、ZooKeeper、etcd与Eureka作为微服务注册中心的特性,包括编写语言、客户端支持、多数据中心支持、KV存储、健康检查等功能,并从CAP理论角度分析了一致性算法。


被折叠的 条评论
为什么被折叠?



