5月30日 20:13

Zookeeper、Etcd 和 Consul 有什么区别?该怎么选?

Zookeeper、Etcd 和 Consul 都能做分布式协调,但出发点不一样。Zookeeper 更像协调原语库,擅长临时节点、顺序节点、Watcher、分布式锁和老牌 Java/大数据生态;Etcd 是强一致 KV,Raft、revision、租约和 Watch 更贴近 Kubernetes 控制面;Consul 把服务发现、健康检查、多数据中心和 KV 打包在一起,适合微服务治理。

追问

Consul 是 AP 还是 CP?

不能简单说 Consul 全部是 AP。服务发现依赖 Gossip,读到的信息可能短暂滞后;Server 集群和 KV 一致读依赖 Raft,更接近 CP。

Zookeeper 和 Etcd 的 Watch 有什么差别?

Zookeeper 的 Watch 是一次性通知,触发后需要重新注册。Etcd Watch 基于 revision,可以从指定版本继续消费事件,但要处理 compaction 后版本过旧的问题。

为什么 Kubernetes 选 Etcd?

Etcd 的 Raft KV、revision、租约和 gRPC API 更符合 Kubernetes 的对象存储与控制循环模型。Zookeeper 数据模型更偏传统中间件生态。

老系统要不要迁到 Etcd?

如果只是为了技术更新,通常不值得。临时节点、顺序节点、ACL、Watcher 语义都要重做,只有控制面重构时才值得评估。

三者性能怎么比较才靠谱?

按读写比例、值大小、Watcher 数量、磁盘 fsync 和网络延迟压测。不要只看单机 benchmark。

标签:Zookeeper