`
liyonghui160com
  • 浏览: 761255 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

zkClient 监控机制实现

阅读更多

 

       直接使用zk的api实现业务功能比较繁琐。因为要处理session loss,session expire等异常,在发生这些异常后进行重连。又因为ZK的watcher是一次性的,如果要基于wather实现发布/订阅模式,还要自己包装一下,将一次性订阅包装成持久订阅。另外如果要使用抽象级别更高的功能,比如分布式锁,leader选举等,还要自己额外做很多事情。这里介绍下ZK的两个第三方客户端包装小工具,可以分别解决上述小问题。

 

一、 zkClient

zkClient主要做了两件事情。一件是在session loss和session expire时自动创建新的ZooKeeper实例进行重连。另一件是将一次性watcher包装为持久watcher。后者的具体做法是简单的在watcher回调中,重新读取数据的同时再注册相同的watcher实例。

 

zkClient简单的使用样例如下:

 

public static void testzkClient(final String serverList) {
		ZkClient zkClient4subChild = new ZkClient(serverList);
		zkClient4subChild.subscribeChildChanges(PATH, new IZkChildListener() {
			@Override
			public void handleChildChange(String parentPath, List currentChilds) throws Exception {
				System.out.println(prefix() + "clildren of path " + parentPath + ":" + currentChilds);
			}
		});

上面是订阅children变化,下面是订阅数据变化

		ZkClient zkClient4subData = new ZkClient(serverList);
		zkClient4subData.subscribeDataChanges(PATH, new IZkDataListener() {
			@Override
			public void handleDataChange(String dataPath, Object data) throws Exception {
				System.out.println(prefix() + "Data of " + dataPath + " has changed");
			}

			@Override
			public void handleDataDeleted(String dataPath) throws Exception {
				System.out.println(prefix() + dataPath + " has deleted");
			}
		});

订阅连接状态的变化:

		ZkClient zkClient4subStat = new ZkClient(serverList);
		zkClient4subStat.subscribeStateChanges(new IZkStateListener() {
			@Override
			public void handleNewSession() throws Exception {
				System.out.println(prefix() + "handleNewSession()");
			}

			@Override
			public void handleStateChanged(KeeperState stat) throws Exception {
				System.out.println(prefix() + "handleStateChanged,stat:" + stat);
			}
		});

 

分享到:
评论

相关推荐

    zkClient:实现zookeeper客户端,实现客户端连接,重连,基本数据操作,监听等功能

    zkclient 项目项目介绍:zkclient 是对zookeeper java客户端进行的封装,主要实现了连接、断线重连,watch事件改为listen监听事件,分布式锁等注意: 使用时需要自行编译安装到maven或打成jar使用使用方式:...

    zookeeper开源客户端ZkClient使用

    ZkClient是Github上一个开源的ZooKeeper客户端。ZkClient在ZooKeeper原生 API接口之上进行了包装,是一个更加易用的ZooKeeper客户端。同时,ZkClient在内部实现了诸如Session超时重连、Watcher反复注册等功能。

    zkclient jar包

    zkclient

    zkclient-2.1.1.rar

    zkclient-2.1.1.jar 包

    zookeeper客户端zkClient操作示例

    zookeeper客户端zkClient操作示例

    zkclient-0.10

    zkclient-0.10 zkclient-0.10.jar

    zkclient-0.3.jar

    zkclient-0.3.jar for windows

    zkclient 1.0 源码包

    zkclient1.0的jar包以及源码,使用ZooKeeper必用,淘宝官方提供

    zkclient-2.1.1.jar

    zkclient-2.1.1.jar

    zkclient-0.8-API文档-中文版.zip

    赠送jar包:zkclient-0.8.jar; 赠送原API文档:zkclient-0.8-javadoc.jar; 赠送源代码:zkclient-0.8-sources.jar; 赠送Maven依赖信息文件:zkclient-0.8.pom; 包含翻译后的API文档:zkclient-0.8-javadoc-API...

    zkclient-0.10-API文档-中英对照版.zip

    赠送jar包:zkclient-0.10.jar; 赠送原API文档:zkclient-0.10-javadoc.jar; 赠送源代码:zkclient-0.10-sources.jar; 赠送Maven依赖信息文件:zkclient-0.10.pom; 包含翻译后的API文档:zkclient-0.10-javadoc-...

    zkclient-0.1-API文档-中文版.zip

    赠送jar包:zkclient-0.1.jar; 赠送原API文档:zkclient-0.1-javadoc.jar; 赠送源代码:zkclient-0.1-sources.jar; 包含翻译后的API文档:zkclient-0.1-javadoc-API文档-中文(简体)版.zip 对应Maven信息:...

    zkclient各版本型号.rar

    zkclient包含了0.3版本、2.2.1版本、0.9版本、0.8版本、1.0版本、2.0版本

    zkclient-0.8.jar

    zkclient-0.8 2016新的jar包

    zkclient文档

    zkclient简单介绍,类图uml 以及简单的。ZkClient如何解决使用ZooKeeper客户端遇到的问题的呢?

    ZookeeperJava客户端zkclient.zip

    简单、高效的Zookeeper Java客户端。... session过期自动重连、机制 快速入门 下面部分将引导使用者快速入门。 快速指南: 简单快速入门使用,满足大部分需求 FAQ: 常见的问题 标签:zkclient

    zkclient-0.2.jar

    zkclient-0.2.jar

    zkclient-0.10-API文档-中文版.zip

    赠送jar包:zkclient-0.10.jar; 赠送原API文档:zkclient-0.10-javadoc.jar; 赠送源代码:zkclient-0.10-sources.jar; 赠送Maven依赖信息文件:zkclient-0.10.pom; 包含翻译后的API文档:zkclient-0.10-javadoc-...

    zkclient.jar

    从git上下载源码打包后的zkclient.jar

    zookeeper Java程序监控

    zookeeper节点三种方式监控,第一种实现zookeeper原生API进行监控操作,第二种实现zkclient进行监控 ,第三种实现curator进行监控。程序中包含使用的jar,在eclipse下可直接运行。希望对您有所帮助。

Global site tag (gtag.js) - Google Analytics