ZooKeeper是一个分布式、高可用性的协调服务。ZooKeeper提供分布式配置服务、同步服务和命名注册等功能。

基本原理

一个ZooKeeper集群需要由奇数个(2N+1)节点构成,通过内部选举协议选出一个Leader节点,其余为Follower节点。写入数据时,由Leader节点负责统一协调写请求,至少(N+1)个节点投票成功才能确定本次数据写入成功,因此至少有(N+1)个存活的节点才能保证ZooKeeper整体服务可用。当Leader节点异常退出时,ZooKeeper集群会重新发起选举,选出新的Leader节点,保证整体服务的高可用。

数据组织

ZooKeeper的数据组织方式与标准文件系统类似,组织成类似文件树的结构,在ZooKeeper中使用znode(ZooKeeper node)来描述文件,与标准文件系统不同的是,znode并不区分目录或者文件的概念,每个znode都可以存储数据。 Zookeeper

ZooKeeper作为一个协调服务,znode主要用来存储协调性数据,例如,服务状态信息和配置信息等,不应把ZooKeeper作为文件系统来存储大量数据。