zkClient是GitHub上的开源项目,解决了watcher的一次性注册问题,将znode的事件重新定义为子节点的变化
、数据的变化
、连接以及状态的变化
三类,由zkClient统一将watcher的WatcherEvent转换到以上三种情况中去处理,watcher执行后重新读取数据的同时,再注册相同的watcher。
生成jar包
zkclient在GitHub上只提供了源码,如果要使用它的话,需要自己将其制作成jar包。
- 创建一个java工程;
- 将git下来的
src
->main
内容,复制粘贴进项目的src
目录中; - 将原来的zkClient项目依赖的
lib
全部引入进刚新建zkclient的项目; - 生成jar包:Export->Java->JAR file->[命名](假设命名为
zkclient.jar
)。
zkClient开发
将生成的JAR file名字为zkclient.jar,以及ZooKeeper本来依赖的其他JAR全部导入新项目中,就可以开始开发了。
zkClient主要实现了三个订阅事件:
子节点的变化
zkClient.subscribeChildChanges(PATH, new IZkChildListener() { |
数据的变化
包括数据被删除、数据改变。
zkClient.subscribeDataChanges(PATH, new IZkDataListener() { |
连接以及状态的变化
包括状态改变、Session建立出错、新建Session。
zkClient.subscribeStateChanges(new IZkStateListener() { |
附录
package org.byteparallel.zkclient; |
References:
[1] 大型分布式网站架构设计与实践.陈康贤著