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