这里就平时经常用到的服务发现的产品进行下特性的对比,首先看下结论:
Feature Consul zookeeper etcd euerka
服务健康检查
服务状态,内存,硬盘等
(弱)长连接,keepalive
连接心跳
可配支持
多数据中心
支持
—
—
—
kv存储服务
支持
支持
支持
—
一致性
raft
paxos
raft
—
cap
ca
cp
cp
ap
使用接口(多语言能力)
支持http和dns
客户端
http/grpc
http(sidecar)
watch支持
全量/支持long polling
支持
支持 long polling
支持 long polling/大部分增量
自身监控
metrics
—
metrics
metrics
安全
acl /https
acl
https支持(弱)
—
spring cloud集成
已支持
已支持
已支持
已支持
服务的健康检查
Euraka 使用时需要显式配置健康检查支持;Zookeeper,Etcd 则在失去了和服务进程的连接情况下任务不健康,而Consul 相对更为详细点,比如内存是否已使用了90%,文件系统的空间是不是快不足了。
多数据中心支持
Consul 通过 WAN 的Gossip 协议,完成跨数据中心的同步;而且其他的产品则需要额外的开发工作来实现;
KV 存储服务
除了 Eureka ,其他几款都能够对外支持 k-v 的存储服务,所以后面会讲到这几款产品追求高一致性的重要原因。而提供存储服务,也能够较好的转化为动态配置服务哦。