Zookeeperapi官网:http://zookeeper.apache.org/doc/r<version:版本号>/index.html
Zookeeper是一种作用于分布式应用高性能的调度服务。Zookeeper提供了公共的服务,在一组简单的接口中,例如例如命名、配置管理、同步和集群服务等,
因此你不需要从底层开始写这些服务。你可以使用现成的这些接口来实现一致性,组管理,选举和现场协议[?]等。你可以根据自己需求来建立。
整个API分为六大类:Overview、Developer、BookKeeper、Admin&Ops、Contributor、Miscellaneous;
这篇文档用来指导开发人员利用Zookeeper协调服务的特点创建分布式应用。它包含了理论和实际操作的知识。
文档的前四部分讲述了更高层次的不同的Zookeeper中的概念。这些概念都是必要的对于理解Zookeeper是如何工作的。
这里不包含源码,并且设定读者都是熟悉分布式计算面临的问题。
第一组(前四部分)的包括:
1.Zookeeper数据模型
2.Zookeeper会话
3.Zookeeper监视器
4.一致性保证
接下来的四部分提供了实用的编程事例:
1.构建:Zookeeper操作指南
2.绑定
3.用简单的例子展示程序结构
4.陷阱:常见的错误和解决
本文档中的大部分信息可作为独立的参考资料来访问。在你开始创建第一个Zookeeper应用时,请先至少读一下Zookeeper数据模型和Zookeeper基本操作的章节。
简单程序事例有助于理解基本的Zookeeper客户端应用的结构。
Zookeeper数据类型
Zookeeper具有层次化的命名空间,像一个分布式的文件系统。唯一的区别是在命名空间中每一个节点可以存放与它相关联的数据以及子节点。这类似与文件系统也允许一个文件也是一个目录。
节点的路径总是被表达成规范的、绝对的、以/为分割符的形式,没有相对路径。任何一个符合以下约束的unicode字符都可以在路径中使用:
1.The null character (\u0000) cannot bepart of a path name. (This causes problems with the C binding.)
2.The following characters can't be usedbecause they don't display well, or render in confusing ways: \u0001 - \u0019and \u007F - \u009F.
3.The following characters are not allowed:\ud800 -uF8FFF, \uFFF0 - uFFFF.
4.The "." character can be usedas part of another name, but "." and ".." cannot alone beused to indicate a node along a path, because ZooKeeper doesn't use relativepaths. The following would be invalid: "/a/b/./c" or"/a/b/../c".
5.The token "zookeeper" isreserved.
ZNodes
在Zookeeper树中的每一个节点都被称为一个znode。Znodes维护一个Stat结构体,包括数据更改的版本号、权限更改等,当然也包括时间戳。
数据版本号和时间戳提供了Zookeeper验证缓存并协调缓存的功能。每次znode数据更新,版本号都会加一。例如,当客户端检索服务器端的数据时,都会返回数据的版本号。
当客户端执行更新或者删除操作时,它必须提供正在修改的znode数据的版本号。当客户端提供的数据版本号与服务器的不匹配,则将会更