美文网首页
Zookeeper学习-day3-Java 客户端 API的使用

Zookeeper学习-day3-Java 客户端 API的使用

作者: 小辉0829 | 来源:发表于2020-04-08 14:56 被阅读0次

    最近公司项目一直在忙,各种项目,从上次更新了Zookeeper后已经有几个月没写点东西了..最近我也正好处在一个工作的过渡阶段.终于可以继续写点东西了..还是zookeeper 我们跟着上前一篇的继续咯..

    上次写到Zookeeper的8个读取节点方法,今天我们来一一道来.

    闲话不多说了,我们直接上代码

    image.png
     /**
         * @param path
         * @param watcher explicit watcher
         * @param watch whether need to watch this node
         * @param cb a handler for the callback
         * @param ctx context to be provided to the callback
         * @param stat stat of the znode designated by path
         */
    

    1 - zookeeper API获取子节点列表, 使用同步(sync)接口

    public class ZookeeperGetChilrenSync implements Watcher {
        private static Logger logger = LoggerFactory.getLogger(ZookeeperGetChilrenSync.class);
        private static CountDownLatch latch = new CountDownLatch(1);
        static ZooKeeper zk = null;
        
        public static void main(String[] args) throws Exception {
            String path = "/zk-edu-test";
            zk = new ZooKeeper("192.168.131.134:2181", 5000, new ZookeeperGetChilrenSync());
            latch.await();
            zk.create(path, "".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
            zk.create(path + "/child-1", "".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL);
    
            List<String> childrenList = zk.getChildren(path, true);
            System.out.println(childrenList);
    
            zk.create(path + "/child-2", "".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL);
            Thread.sleep(Integer.MAX_VALUE);
        }
    
        @Override
        public void process(WatchedEvent event) {
            logger.info("===== event: {}", event);
            if (Watcher.Event.KeeperState.SyncConnected == event.getState()) {
                if (Watcher.Event.EventType.None == event.getType() && null == event.getPath()) {
                    latch.countDown();
                } else if (event.getType() == Watcher.Event.EventType.NodeChildrenChanged) {
                    try {
                        System.out.println("ReGet Child :" + zk.getChildren(event.getPath(), true));
                    } catch (KeeperException e) {
                        e.printStackTrace();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
                }
    
            }
        }
    }
    
    image.png

    关于Watch, ZooKeeper服务端在向客户端发送Wather "NodeChildrenChange" 事件通知的时候, 发出一个通知,而不会把节点的变化情况发送给客户端,需要客户端自己重新获取. 另外, 由于Watcher通知是一次性的,即一旦触发一次通知后,该Watcher就失败了. 因此客户端需要反复注册

    2 - zookeeper API获取子节点列表, 使用异步(async)接口

    相关文章

      网友评论

          本文标题:Zookeeper学习-day3-Java 客户端 API的使用

          本文链接:https://www.haomeiwen.com/subject/dpevuftx.html