ZooKeeper是一个分布式、开源的分布式应用协调服务。node
在ZooKeeper中,分布式进程之间的相互协调,是经过相似于标准文件系统的层次命名空间的(图以下)。相似于文件和目录,每一个组成部分称之为znode,znode是zookeeper中的最小数据单位,可是与存储的文件系统不一样的是,这些数据是存在于内存的,因此ZooKeeper能够实现高吞吐量和低延迟。
另一个不一样的是,节点既能够有本身的数据,也能够有本身的子节点,在存储系统中,是不可能本身既是目录,仍是文件的。Znode中有一个stat结构,其中包含数据更改、ACL更改和时间戳的版本号,以容许缓存验证和协调更新。
节点有4种类型:web
这个特性,支持他能够作集群,只要大多数服务是可用的,那ZooKeeper就是可用的。
客户端链接ZooKeeper服务时,须要知道每一个ZooKeeper的地址。当客户端链接到单个ZooKeeper时,会维护一个TCP链接,经过它发送请求、获取响应、获取监视事件和发送心跳。若是到服务器的TCP链接中断,客户端将链接到另外一台服务器。缓存
ZooKeeper用一个数字来标记每一个更新,这个数字反映了全部ZooKeeper事务的顺序。服务器
数据是存在于内存的,因此ZooKeeper能够实现高吞吐量和低延迟。session
事件监听器。客户端能够在znode上设置监听,当znode发生变化时,这个监听就会被移除,而后客户端就会收到通知。要想不停的监听,就须要继续注册。分布式
控制节点访问权限spa