ZkClient

ZkClient

创建一个ZkClient实例

IZkClient zkClient = new ZkClient("127.0.0.1:3000,127.0.0.1:3001,127.0.0.1:3002");

读取数据

byte[] readData(String path);
byte[] readData(String path, boolean returnNullIfPathNotExists);
byte[] readData(String path, Stat stat);

写入数据

Stat writeData(String path, byte[] data);
Stat writeData(String path, byte[] data, int expectedVersion);

创建节点

void createPersistent(String path);
void createPersistent(String path, boolean createParents);
void createPersistent(String path, byte[] data);
String createPersistentSequential(String path, byte[] data);
void createEphemeral(final String path);
void createEphemeral(final String path, final byte[] data);
String createEphemeralSequential(final String path, final byte[] data);
String create(final String path, byte[] data, final CreateMode mode);

删除节点

boolean delete(final String path);
boolean deleteRecursive(String path);

查询节点

boolean exists(final String path);
List<String> getChildren(String path);
long getCreationTime(String path);
int countChildren(String path);

订阅事件

zkclient的强大之处不在于基本zookeeper api操作,而在于事件监听机制,也就是zookeeper的watches。

Zookeeper的watcher在使用上存在一次性、session过期等难点,因此zkclient对这些问题进行了封装和屏蔽。 zkclient一共定义了三种事件:

com.github.zkclient.IZkStateListener

public void handleStateChanged(KeeperState state) throws Exception;
public void handleNewSession() throws Exception;

com.github.zkclient.IZkDataListener

public void handleDataChange(String dataPath, byte[] data) throws Exception;
public void handleDataDeleted(String dataPath) throws Exception;

com.github.zkclient.IZkChildListener

public void handleChildChange(String parentPath, List currentChildren) throws Exception;
  • IZkStateListener 定义了两种事件,一种是连接状态的改变,例如由未连接改变成连接上,连接上改为过期等;另一种创建一个新的session(连接), 通常是由于session失效然后新的session被建立时触发。一般此时需要开发者重新创建临时节点(Ephemeral Nodes)。
  • IZkDataListener 也定义了两种事件,一种是节点数据的变化,另一种是节点被删除。
  • IZkChildListener 定义了一种事件,描述子节点变化了,这时候获取到的是新的子节点列表。如果此节点被删除,那么子节点列表是null(非空列表)。

IZkClient能够非常方便的订阅这三种事件:

void subscribeStateChanges(IZkStateListener listener);
void subscribeDataChanges(String path, IZkDataListener listener);
List subscribeChildChanges(String path, IZkChildListener listener);

而zkclient最强大之处在于,当发送session失效时能够自动重新订阅这些事件,而不需要开发者重新订阅。

时间: 2024-11-06 16:19:23

ZkClient的相关文章

ZooKeeper客户端原生API的使用以及ZkClient第三方API的使用

这两部分内容的介绍主要讲的是节点及节点内容和子节点的操作,并且讲解的节点的事件监听以及ACL授权 ZooKeeper客户端原生API的使用 百度网盘地址: http://pan.baidu.com/s/1jI3b8n8 ZkClient第三方API的使用 ZkClient是Github上一个开源的ZooKeeper客户端.ZkClient在ZooKeeper原生API之上进行了包装,是一个更加易用的ZooKeeper客户端.同时ZkClient在内部实现了诸如Session超时重连.Watche

Dubbo报org.I0Itec.zkclient.exception.ZkNoNodeException异常

解决办法就是添加zkclient的jar,maven工程的话增加如下引用: <dependency>     <groupId>com.github.sgroschupf</groupId>     <artifactId>zkclient</artifactId>     <version>0.1</version> </dependency>

Zookeeper之开源客户端ZkClient

ZkClient是由Datameer的工程师开发的开源客户端,对Zookeeper的原生API进行了包装,实现了超时重连.Watcher反复注册等功能. ZKClient版本及源码 maven依赖 ZkClient目前有两个不同artifactId的系列. 其中最早的0.1版本maven依赖如下: <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</ar

zookeeper_service 出错 java.lang.NoClassDefFoundError: org/I0Itec/zkclient/exception/ZkNoNodeException

2016-12-18 08:28:07 ContextLoader:358 ERROR - Context initialization failed java.lang.NoClassDefFoundError: org/I0Itec/zkclient/exception/ZkNoNodeException 解决: 在pom.xml加入 <dependency> <groupId>com.101tec</groupId> <artifactId>zkcli

Zookeeper 客户端 之【ZkClient】

[ZkClient]  ZkClient 是 GitHub 上一个开源的客户端,如果我们用 Maven 来管理工程,则引用如下. <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.10</version> </dependency> <dependency

(原) 2.2 ZkClient使用

本文为原创文章,转载请注明出处,谢谢 ZkClient使用 1.jar包引入,演示版本为0.8,非maven项目,可以下载jar包导入到项目中 <dependency> <groupId>com.101tec</groupId> <artifactId>zkclient</artifactId> <version>0.8</version> </dependency> 2.创建Zookeeper连接 示例:Zk

zookeeper学习笔记-zkclient,curator使用

开源客户端,原生api的不足 连接的创建是异步的,需要开发人员自行编码实现等待 连接没有自动的超时重连机制 Zk本身没提供序列化机制,需要开发人员自行指定,从而实现数据的序列化和反序列化 Watcher注册一次只会生效一次,需要不断的重复注册 Watcher的使用方式不符合java本身的术语,如果采用监听器方式,更容易理解 不支持递归创建树形节点 开源客户端---ZkClient介绍 Github上一个开源的zk客户端,由datameer的工程师Stefan Groschupf和Peter Vo

ZooKeeper:第三方客户端 ZKClient

ZKClient ZKClient的设计 ZKClient组件说明 重要的处理流程说明 启动ZKClient 为节点注册Watcher ZooKeeper的变更操作 客户端处理变更 序列化处理 ZKClient如何解决使用ZooKeeper客户端时遇到的问题? ZkClient 在使用ZooKeeper的Java客户端时,经常需要处理几个问题:重复注册watcher.session失效重连.异常处理. 要解决上述的几个问题,可以自己解决,也可以采用第三方的java客户端来完成.这里就介绍一种常用

ZkClient Jar包的使用

zookeeper有其官网的java客户端,但是使用起来不够人性化,所以有人对zookeeper客户端进行了封装,这就是ZkClient. 今天试了下关于ZkClient的api使用.由于时间问题,先贴出来回头有时间在整理下 (String[] args) {         String serverString = ZkClient zkClient = ZkClient(serverString)isExist = zkClient.exists()System..println(isEx