ZooKeeper 是一个分布式程序,只要半数以上节点存活,ZooKeeper 就能正常提供服务。
为了保证高可用,最好是以集群形态来部署 ZooKeeper,这样只要集群中大部分机器是可用的(能够容忍一定的机器故障),那么 ZooKeeper 本身仍然是可用的。
ZooKeeper 将数据保存在内存中,这也就保证了高吞吐量和低延迟,但是内存限制了能够存储的容量有限,此限制也是 zNode 中存储的数据量较小的主要原因。
ZooKeeper 是高性能的。在 “读” 多于 “写” 的应用程序中更能体现其高性能,因为 “写” 会导致所有的服务间进行状态同步,(“读” 多于 “写” 是协调服务的典型场景)。
ZooKeeper 有临时节点的概念。只要创建临时节点的客户端会话一直保持活动,瞬时节点就一直存在。而当会话终结时,瞬时节点就会被删除。持久节点是指,一旦这个 ZNode 被创建了,除非主动进行 ZNode 的移除操作,否则这个 ZNode 将一直保存在 Zookeeper 上。
ZooKeeper 底层其实只提供了两个功能:① 管理(存储、读取)用户程序提交的数据;② 为用户程序提供数据节点监听服务。