zoukankan      html  css  js  c++  java
  • Zookeeper java api

          Zookeeper java api 主要有以下几个:

    方法名称描述
    String create(final String path, byte data[], List acl, CreateMode createMode)

    创建一个znode节点,

    参数: 路径、 znode内容,ACL(访问控制列表)、 znode创建类型

    void delete(final String path, int version)

    删除一个znode节点,

    参数: 路径、版本号;如果版本号与znode的版本号不一致,将无法删除,是一种乐观加锁机制;如果将版本号设置为-1,不会去检测版本,直接删除;

    Stat exists(final String path, Watcher watcher)

    判断某个znode节点是否存在

    参数: 路径、Watcher(监视器);当这个znode节点被改变时,将会触发当前Watcher

    Stat exists(String path, boolean watch)

    判断某个znode节点是否存在

    参数: 路径、并设置是否监控这个目录节点,这里的 watcher 是在创建 ZooKeeper 实例时指定的 watcher

    Stat setData(final String path, byte data[], int version)

    设置某个znode上的数据

    参数: 路径、数据、版本号;如果为-1,跳过版本检查

    byte[] getData(final String path, Watcher watcher, Stat stat)

    获取某个znode上的数据

    参数: 路径、监视器、数据版本等信息

    List getChildren(final String path, Watcher watcher)

    获取某个节点下的所有子节点

    参数: 路径、监视器;该方法有多个重载

    package com.test.protobuf;
    
    import org.apache.zookeeper.*;
    
    import java.io.IOException;
    import java.util.concurrent.CountDownLatch;
    
    /**
     * Created by szekinwin on 2017/7/7.
     */
    public class ZookeeperDemo {
    
        //zookeeper连接地址
        private static final String CONNECT_ADDR="172.31.19.222:2181,172.31.19.223:2181,172.31.19.234:2181";
        //超时时间
        private static final int SESSION_TIMEOUT=2000;
        //等待zookeeper连接成功,程序继续往下执行(zookeeper连接是异步连接)
        private static final CountDownLatch countDownLatch = new CountDownLatch(1);
    
        public static void main (String [] args){
            try {
                ZooKeeper zooKeeper = new ZooKeeper(CONNECT_ADDR, SESSION_TIMEOUT, new Watcher() {
                    public void process(WatchedEvent event) {
                        Event.KeeperState state = event.getState();
                        Event.EventType type = event.getType();
                        if(Event.KeeperState.SyncConnected==state){
                            if(Event.EventType.None==type){
                                countDownLatch.countDown();
                                System.out.println("Zookeeper connect successfully!");
                            }
                        }
                    }
                });
                try {
                    countDownLatch.await();
                    try {
                        //创建节点  节点类型为PERSISTENT 永久型  EPHEMERAL临时节点,客户端session超时这类节点就会被自动删除
                        zooKeeper.create("/testRoot","testRoot".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
                        //创建子节点  zookeeper java api 不支持递归创建节点
                        zooKeeper.create("/testRoot/children","children".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
                        //获取节点值
                        byte [] msg=zooKeeper.getData("/testRoot/children",false,null);
                        System.out.println(new String(msg));
                        //修改节点值
                        zooKeeper.setData("/testRoot/children","testRoot Children".getBytes(),-1);
                        byte [] msg2=zooKeeper.getData("/testRoot/children",false,null);
                        System.out.println(new String(msg2));
                        //判断节点是否存在
                        System.out.println(zooKeeper.exists("/testRoot/children",false));
                        //删除节点
                        zooKeeper.delete("/testRoot/children",-1);
                        zooKeeper.close();
                    } catch (KeeperException e) {
                        e.printStackTrace();
                    }
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
    }
  • 相关阅读:
    Java并发编程笔记——技术点汇总
    Hello Blog
    shell变量
    认识bash这个shell
    使用myeclipse创建带注解的model实体类
    python List,切片的用法
    ignite从0到1的学习过程记录-第一篇:安装和体验
    安卓Service完全解析(中)
    安卓Service完全解析(上)
    JAVA之数组
  • 原文地址:https://www.cnblogs.com/gdpuzxs/p/7136979.html
Copyright © 2011-2022 走看看