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(); } } }