###Fast Paxos算法:
这个还没看,先留个坑把。
###文件结构:
zookeeper的文件结构大概是这个样子的:
!å¾ 1 Zookeeper æ°æ®ç”æ](https://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper/image001.gif)
znode(data node):
- 其中的每个子目录就是一个znode,他们也可以有子的znode(临时znode除外)。
- 这些znode必须是绝对路径,不允许相对路径。
- 每个znode都维护一个stat structure(linux系统文件的结构),其中包括版本号,acl改变等等。每次更新数据会让版本号自增。
- 每个znode可以设置一个watches,当watch触发后,zookeeper将发给client一个提醒。
- 在znode中数据读写是原子性的。每个znode都有一个ACL(access control list)来控制其读写权限。zookeeper不是用来做数据库的,其中存储的数据可能都是几kb的配置/状态信息。大块数据都存在hdfs中。
- Ephemeral node就是临时节点,每次会话结束这些节点都会清空,不允许有子节点。
###Zookeeper Session:
###一致性的保证:
zookeeper是一个非常高效、可扩展的服务。其一致性靠以下几点保证:
- 顺序的一致性。一个client的更新会依序发送给其他。
- 原子性。更新是原子操作,只有成功和失败,没有中间过程。
- 服务器会看到完全相同的服务,不论其连接了哪个服务器。
- 可靠性。一旦一个更新被部署,他会一直存在,直到被另一个更新覆盖。
- 及时性。client对系统的观察在一个时间段内将是最新的。也即系统的改变在这个时间段内client是看见的,或者可以探测到它失败。