相较之下,ZooKeeper有以下缺点: 1. 复杂。ZooKeeper的部署维护复杂,管理员须要掌握一系列的知识和技能;而Paxos强一致性算法也是素来以复杂难懂而闻名于世;另外,ZooKeeper的使用也比较复杂,须要安装客户端,官方只提供了Java和C两种语言的接口。 2. Java编写。这里不是对Java有偏见,而是Java自己就偏向于重型应用,它会引入大量的依赖。而运维人员则广泛但愿保持强一致、高可用的机器集群尽量简单,维护起来也不易出错。 3. 发展缓慢。Apache基金会项目特有的“Apache Way”在开源界饱受争议,其中一大缘由就是因为基金会庞大的结构以及松散的管理致使项目发展缓慢。 而etcd做为一个后起之秀,其优势也很明显。 1. 简单。使用Go语言编写部署简单;使用HTTP做为接口使用简单;使用Raft算法保证强一致性让用户易于理解。 2. 数据持久化。etcd默认数据一更新就进行持久化。 3. 安全。etcd支持SSL客户端安全认证。 4. Etcd支持更方便的HTTP API,多语言支持比zookeeper也要好一些。 Etcd没有acl权限控制。 相较于etcd、zookeeper,consul最大的特色就是:它整合了用户服务发现广泛的需求,开箱即用,下降了使用的门槛,并不须要任何第三方的工具。代码实现上也足够简单。