最近一年来一直在关注微服务系列,而它必不可缺少的组件就是注册中心。目前市面上辣么可以作为注册中心组件,那该如何选型?
特性 |
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 设计上比较符合场景,但还需持续的完善。