Zookeeper(2)-使用Zookeeper的原生Api對Zookeeper的節點進行操作

ZooKeeper原生Api的操作

下面是原生Api提供的一些列操作的介紹

這裏寫圖片描述

創建一個ConnectWatcher

public class ConnectWatcher implements Watcher {
    private CountDownLatch countDownLatch=null;
    public void process(WatchedEvent watchedEvent) {
        if(watchedEvent.getState()== Event.KeeperState.SyncConnected){
            countDownLatch.countDown();
        }
    }
    public ConnectWatcher(CountDownLatch countDownLatch){
        this.countDownLatch=countDownLatch;
    }

創建ZookeeperGroup類

該類主要是對zk的鏈接,使用,創建節點,刪除節點,得到節點的列表

import org.apache.zookeeper.CreateMode;
import org.apache.zookeeper.KeeperException;
import org.apache.zookeeper.ZooDefs;
import org.apache.zookeeper.ZooKeeper;

import java.util.List;
import java.io.IOException;
import java.util.concurrent.CountDownLatch;

public class ZookeeperGroup {
     private static final String ZKHOST="47.106.132.60:2181,47.106.132.60:2182,47.106.132.60:2183";
     private static final int SESSION_TIMEOUT= 5000;
        CountDownLatch countDownLatch;
     private ZooKeeper zooKeeper;
    public void creat() throws IOException, InterruptedException {
        countDownLatch=new CountDownLatch(1);
        zooKeeper=new ZooKeeper(ZKHOST,SESSION_TIMEOUT,new ConnectWatcher(countDownLatch));
        countDownLatch.await();
    }
    public void createRoot() throws KeeperException, InterruptedException {
        String path= zooKeeper.create("/zkGroup",null, ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
        System.out.println(path);
    }
    public void addZnode(String pathName,String data) throws KeeperException, InterruptedException {
        byte[] bytes;
        if(data==null){
            bytes=null;
        }else {
            bytes=data.getBytes();
        }
        String path= zooKeeper.create(pathName,bytes, ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL);
        System.out.println(path);
    }
    public void delZnode(String pathName,int version) throws KeeperException, InterruptedException {
        zooKeeper.delete(pathName, version);
    }
    public void list(String root) throws KeeperException, InterruptedException {
        List<String> childs= zooKeeper.getChildren(root,false);
        for (String child:childs
             ) {
            System.out.println(child);
        }
    }
}

測試類


import org.apache.zookeeper.KeeperException;

import java.io.IOException;
import java.util.concurrent.CountDownLatch;

public class TestGroup {
    public static void main(String[] args) throws KeeperException, InterruptedException, IOException {
        CountDownLatch countDownLatch=new CountDownLatch(1);
        ZookeeperGroup zookeeperGroup=new ZookeeperGroup();
        zookeeperGroup.creat();
        zookeeperGroup.createRoot();
        String[] pathNames={"/zkGroup/group1","/zkGroup/group2","/zkGroup/group3"};
        ZookeeperGroup zookeeperGroup1;
        for (int i=0;i<3;i++){
            zookeeperGroup1=new ZookeeperGroup();
            zookeeperGroup1.creat();
            zookeeperGroup1.addZnode(pathNames[i],null);
        }
        countDownLatch.await();
    }
}

操作ZooKeeper的原生Api需要在pom.xml文件中引入zookeeper的maven依賴

<dependency>
    <groupId>org.apache.zookeeper</groupId>
    <artifactId>zookeeper</artifactId>
    <version>3.4.5</version>
</dependency>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章