zookeeper 原生 api 操作
发布于: 15 分钟前
pom 文件引入
<dependencies>    <dependency>        <groupId>org.apache.zookeeper</groupId>        <artifactId>zookeeper</artifactId>        <version>3.4.14</version>    </dependency></dependencies>
复制代码
 几个状态和概念节点创建的权限信息 ACL 参数的类型
- ANYONE_ID_UNSAFE : 表示任何⼈ 
- AUTH_IDS :此 ID 仅可⽤于设置 ACL。它将被客户机验证的 ID 替换。 
- OPEN_ACL_UNSAFE :这是⼀个完全开放的 ACL(常⽤)-->world:anyone 
- CREATOR_ALL_ACL :此 ACL 授予创建者身份验证 ID 的所有权限节点的几种类型的枚举 
- PERSISTENT:持久节点 
- PERSISTENT_SEQUENTIAL:持久顺序节点 
- EPHEMERAL:临时节点 
- EPHEMERAL_SEQUENTIAL:临时顺序节点 
zookeeper 原生 api 创建会话操作
public class CreateSession implements Watcher {    private static CountDownLatch countDownLatch = new CountDownLatch(1);
    public static void main(String[] args) throws IOException, InterruptedException {        ZooKeeper zooKeeper = new ZooKeeper("119.45.52.68:2181",6000,new CreateSession());        System.out.println(zooKeeper.getState());        countDownLatch.await();        System.out.println("zk session  create success");
    }    @Override    public void process(WatchedEvent watchedEvent) {        if (watchedEvent.getState()==Event.KeeperState.SyncConnected){            countDownLatch.countDown();        }    }}
复制代码
 正常创建回话
 
 zookeeper 原生 api 获取信息操作
public class getNoetNode implements Watcher {
    private  static ZooKeeper zooKeeper;
    public static void main(String[] args) throws InterruptedException, IOException {        zooKeeper = new ZooKeeper("119.45.52.68:2181",10000,new getNoetNode());        //countDownLatch.await();        Thread.sleep(Integer.MAX_VALUE);    }
    @Override    public void process(WatchedEvent event) {        if(event.getType() ==Event.EventType.NodeChildrenChanged){//再次获取子节点数据,监听子节点变化            try {                List<String> children =                        zooKeeper.getChildren(event.getPath(), true);                System.out.println(children);            } catch (KeeperException e) {                e.printStackTrace();            } catch (InterruptedException e) {                e.printStackTrace();            }        }
        //当连接创建了,服务端发送给客户端SyncConnected事件        if(event.getState() == Event.KeeperState.SyncConnected){            try {//调⽤获取单个节点数据⽅法                getNodeData();                getChildren();            } catch (Exception e) {                e.printStackTrace();            }        }        System.out.println();    }
    private static void getNodeData() throws Exception {        byte[] data = zooKeeper.getData("/persistent/children", true,                null);        System.out.println(new String(data,"utf-8"));    }
    public static  void getChildren() throws Exception{        List<String> childrens = zooKeeper.getChildren("persistent",true);        System.out.println(childrens);
    }}
复制代码
 zookeeper 原生 api 更新节点信息
public class UpdateNode implements Watcher {
    private static ZooKeeper zooKeeper;
    public static void main(String[] args) throws Exception{        zooKeeper = new ZooKeeper("119.45.52.68:2181",6000,new UpdateNode());        Thread.sleep(Integer.MAX_VALUE);
    }    @Override    public void process(WatchedEvent event) {        try {            byte[] before = zooKeeper.getData("/persistent/children",false,null);            System.out.println("修改前的值"+new String(before));           Stat stat = zooKeeper.setData("/persistent","客户端修改的内容".getBytes(),-1);            System.out.println(stat);            byte[] after = zooKeeper.getData("/persistent/children",false,null);            System.out.println("修改后的值"+new String(after));        }catch (Exception e){            e.printStackTrace();        }
    }}
复制代码
 zookeeper 原生 api 删除节点信息
public class DeleteNode implements Watcher {    private static  ZooKeeper zooKeeper;    public static void main(String[] args) throws  Exception{        zooKeeper = new ZooKeeper("119.45.52.68:2181",6000,new UpdateNode());        Thread.sleep(Integer.MAX_VALUE);    }    @Override    public void process(WatchedEvent event) {        try {            Stat exists = zooKeeper.exists("/persistent/children", false);            System.out.println(exists == null ? "该节点不存在":"该节点存在");            zooKeeper.delete("/persistent/children",-1);            Stat exists2 = zooKeeper.exists("/persistent/children", false);            System.out.println(exists2 == null ? "该节点不存在":"该节点存在");        }catch (Exception e){            e.printStackTrace();        }
    }}
复制代码
 划线
评论
复制
发布于: 15 分钟前阅读数: 2

赵镇
关注
还未添加个人签名 2017.12.20 加入
还未添加个人简介











 
    
评论