直接使用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除了做了一些便捷包装之外,对watcher使用做了一点增强。比如subscribeChildChanges实际上是通过exists和getChildren关注了两个事件。这样当create(“/path”)时,对应path上通过getChildren注册的listener也会被调用。另外subscribeDataChanges实际上只是通过exists注册了事件。因为从上表可以看到,对于一个更新,通过exists和getData注册的watcher要么都会触发,要么都不会触发
相关推荐
赠送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:基于zkclient-2.1.1.jar的探索》 ZkClient,全称为Zookeeper Client,是一款广泛应用于Java环境中的Zookeeper客户端工具,它提供了更高级别的API,使得与Zookeeper服务器的交互变得更加简单和...
**Zkclient 1.0 源码包详解** Zkclient 是一个针对 Apache ZooKeeper 的轻量级客户端库,由淘宝官方提供,广泛应用于分布式协调服务中。ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,它是集群的...
ZKClient是一款基于Java的 ZooKeeper 客户端库,它为开发者提供了更方便的接口来操作和管理Zookeeper集群。Zookeeper是一个分布式协调服务,广泛应用于分布式系统中,如配置管理、命名服务、分布式锁、集群管理等。...
《深入理解ZKClient:基于zkclient-0.3.jar的探索》 ZKClient,全称为Zookeeper Client,是一款广泛应用于分布式环境中的客户端库,主要用于与Apache ZooKeeper进行交互。ZooKeeper是一个分布式的、开放源码的...
赠送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...
在"zookeeper客户端zkClient操作示例"中,我们可以学习到如何在Java应用中使用zkClient来实现ZooKeeper的各种操作。以下是一些关键的知识点: 1. **ZooKeeper数据模型**: ZooKeeper的数据模型类似于文件系统,由...
赠送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-...
赠送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是Github上一个开源的ZooKeeper客户端。ZkClient在ZooKeeper原生 API接口之上进行了包装,是一个更加易用的ZooKeeper客户端。同时,ZkClient在内部实现了诸如Session超时重连、Watcher反复注册等功能。
《深入理解ZKClient:基于zkclient-0.10版本》 ZKClient是一款针对Apache ZooKeeper(简称ZooKeeper)的客户端工具,由LinkedIn开源,它为开发者提供了更简单、更方便的方式来操作ZooKeeper。在本文中,我们将深入...
在本资源分享中,我们面临的问题是关于`zkclient`的缺失,这通常意味着项目中引用了该库,但在构建时无法找到对应的JAR包。`zkclient`是针对ZooKeeper的一个客户端库,用于简化对ZooKeeper的操作。 **ZooKeeper**:...
ZKClient是一款针对Apache ZooKeeper的Java客户端库,它提供了比ZooKeeper原生API更为高级和方便的接口,使得开发者在使用ZooKeeper时能够更高效地进行数据操作和监控。ZooKeeper是一个分布式协调服务,常用于管理...
《Zookeeper原生API、ZkClient与Curator在分布式协调中的应用》 Apache ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步...
### zkclient文档知识点详解 #### 一、zkclient简介及背景 ZkClient是一个由Datameer工程师开发的开源客户端库,它旨在简化ZooKeeper客户端的使用过程,通过封装ZooKeeper原生API,提供了更为简洁易用的接口。在...
zkclient-0.8 2016新的jar包
zkclient-2.1.1.jar
zkclient-0.2.jar
简单、高效的Zookeeper Java客户端。 让Zookeeper API 使用起来更简单 非常方便订阅各种事件并自动重新绑定事件(会话建立、节点修改、节点删除、子节点变更等) session过期自动重连、机制 ... 标签:zkclient