ZooKeeper优缺点
zk优点
支持数据持久化
zk数据保存方式
zk使用ConcurrentHashMap来保存键值对。
定时持久化
1. 把每次事务操作记录到日志文件,通过日志文件来恢复数据。
2. 提供对树结构和session信息进行数据快照持久化的操作,有利于加快数据恢复。
删除目录的保护措施
zk删除目录时,如果目录下有子节点,那么会删除失败。
zk缺点
部署麻烦+资源消耗多
zk是用Java编写的,部署繁琐,占用较多内存。
调用接口麻烦
zk RPC使用Jute的序列化机制,自己实现了RPCAPI,无法使用curl之类的常用工具与之互动,etcd支持简单的HTTP+JSON。
watch只是一次性触发
相比etcd、Consul,ZooKeeper的Watch是个一次性触发器。在ZooKeeper中,client对Znode设置了Watch时,如果Znode内容发生改变,那么client就会获得Watch事件。然而此Znode再次发生变化,那client是无法收到Watch事件的,除非client设置了新的Watch。