个人对于Zookeeper的一些主要知识点总结。
Zookeeper主要应用于分布式协调,提供一致性服务。其主要是有两个东西一个是文件系统,一个是通知机制。首先是他的文件系统,是一种数据结构,每一个的子目录项都称znode,能够自由增加和删除,和保存数据,就和数据结构的链表的节点一样。可以用来保存每个客户端发送过的数据。Zookeeper 为了保证高吞吐和低延迟,在内存中维护了这个树状的目录结构,这种特性使得 Zookeeper 不能用于存放大量的数据,每个节点的存放数据上限为1M。而通知机制,客户端端会对某个 znode 建立一个 watcher 事件,当该 znode 发生变化时,这些客户端会收到 zookeeper 的通知,然后客户端可以根据 znode 变化来做出业务上的改变。
那么Zookeeper的服务器和客户端又是怎么连接的呢?
每一个Server代表一个安装Zookeeper服务的服务器。组成 ZooKeeper 服务的服务器都会在内存中维护当前的服务器状态,并且每台服务器之间都互相保持着通信。集群间通过 Zab 协议(Zookeeper Atomic Broadcast)来保持数据的一致性。每个客户机连接一个服务器,建立客户端的信息节点,存储在Leader上面,当其他服务器奔溃了,客户端能够迅速连接到别的服务器,因为每个服务器和客户端的信息都在Leader上面,通过Zab协议稳定连接,保持各节点数据一致性。其中Zookeeper又有两种基本模式:消息广播和奔溃恢复。当 Leader 服务可以正常使用,就进入消息广播模式,当 Leader 不可用时,则进入崩溃恢复模式。