ZKClient在原生API接口上进行了包装,同时在内部实现了诸如session超时重连、watcher反复注册等功能,使得zookeeper客户端繁琐的细节对开发人员透明。下面将从以下几个方面来使用ZKClient这个Zookeeper客户端。
1.创建会话
2.创建节点
3.读取数据
4.更新数据
5.删除节点
6.检查节点是否存在
zkclient的maven依赖
<!--zkClient-->
<!-- https://mvnrepository.com/artifact/com.101tec/zkclient -->
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>0.10</version>
</dependency>
public class ZKClientDemo {
//zookeeper地址。集群时使用逗号分隔
private static final String zkServers = "127.0.0.1:2181";
public static void main(String[] args) {
//创建会话
ZkClient zkClient = new ZkClient(zkServers, 3000);
//创建节点
String path = "/mynode";
String data = "hello";
//zkClient.createPersistent(path);
//zkClient.createEphemeral(path);
zkClient.create(path, data, CreateMode.PERSISTENT);
System.out.println("是否存在mynode节点:" + zkClient.exists(path));
//列出根下所有节点
System.out.println("根下拥有的子节点:" + zkClient.getChildren("/"));
//读取节点的数据
System.out.println(zkClient.readData(path));
//修改节点数据
zkClient.writeData(path, "world");
System.out.println(zkClient.readData(path));
//删除节点
zkClient.delete(path);
//zkClient.delete(path, 1);//删除指定版本号的节点
//zkClient.deleteRecursive(path);//级联删除所有子节点
System.out.println("删除节点后:" + zkClient.getChildren("/"));
//关闭客户端连接
if (zkClient != null) {
zkClient.close();
}
}
}