官网地址:
https://zookeeper.apache.org/doc/current/zookeeperProgrammers.html
1.数据模型
层次命名空间,像一个分布式文件系统,由节点组成形成一个树结构。每个节点是一个ZNode,可以有数据也可以有孩子节点。每个节点有一个ACL限制谁可以做什么。
2.节点类型
节点类型主要有持久节点、临时节点、持久序列节点和临时序列节点四种。
getEphemerals()可以显示一个会话的所有临时节点。
container node和TTL node是3.6.0新增的,容器节点当最后一个孩子被删除后,他就会在不久后被服务器删除。TTL节点如果在TTL时间内没有被修改并且没有孩子节点,也会在不久后被服务器删除。
3.zookeeper中的时间
zxid(事务id),可以根据事务id的大小判断发生的先后。
version number:包括version、cversion、aversion
ticks:如果client收到的会话超时时间小于最小超时时间,实际上就是最小超时时间。
4.Stat Structure
czxid、mzxid、pzxid
ctime、mtime
version、cversion、aversion
ephemeralOnwer
dataLength、numChildren
5.会话
使用语言绑定创建一个服务器的句柄来建立与服务器的会话。
handler启动时时CONNECTING状态,链接上是CONNECTED状态。关闭时候是CLOSE状态。
创建会话需要提供一个连接字符串,逗号分隔的host:port对,每一个对应一个Zookeeper服务器。
6.Watches
getData(), getChildren(),exists()都可以选择设置watch。
3.6.0新加了Persistent, Recursive Watches,即使触发了也不会被移除并且能够对监视节点开始的所有结点进行递归。通过addWatch()设置,通过removeWatches()删除。
7.ACLs
ACLs由(scheme:expression,perms)对组成,例如(ip:19.22.0.0/16,READ)表示以19.22开头的IP都有读的权限。
ACL permissions包括CREATE、READ、WRITE、DELETE、ADMIN。
ACL schemes包括world、auth、digest、ip、x509
8.一致性保证
Sequential Consistency、Atomicity、Single System Image、Reliability、Timeliness