zoukankan      html  css  js  c++  java
  • ZooKeeper学习之路 (五)ZooKeeper API的简单使用 增删改查

    zookeeper文件系统的增删改查

    public class ZKDemo1 {
        
        private static final String CONNECT_STRING = "hadoop1:2181,hadoop2:2181,hadoop3:2181";
        //如果zookeeper使用的是默认端口的话,此处可以省略端口号
        //private static final String CONNECT_STRING = "hadoop1,hadoop2,hadoop3";
        
        //设置超时时间
        private static final int SESSION_TIMEOUT = 5000;
        
        public static void main(String[] args) throws Exception {
            //获取zookeeper的连接
            //没有配置监听的话,最后一个参数设为null
            ZooKeeper zk = new ZooKeeper(CONNECT_STRING, SESSION_TIMEOUT, null);
            
            
            
            //创建一个节点
            /**
             * 四个参数path, data, acl, createMode
             * path:创建节点的绝对路径
             * data:节点存储的数据
             * acl:权限控制
             * createMode:节点的类型----永久、临时    有编号的、没有编号的
             * 
             * */
            //String create = zk.create("/xx", "xx".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT_SEQUENTIAL);
            //System.out.println(create);//输出的结果是:/xx0000000008
            
            /**
             * 判断节点是否存在
             * */
            Stat exists = zk.exists("/xx0000000008", null);
            if(exists == null) {
                System.out.println("节点不存在");
            }else {
                System.out.println("节点存在");
            }
            
            
            /**
             * 查看节点的数据
             * 
             * */
            /*byte[] data = zk.getData("/xx0000000008", false, null);
            System.out.println(new String(data));*/
            
            
            /**
             * 修改节点的数据
             * */
            /*Stat setData = zk.setData("/xx0000000008", "xyz".getBytes(), -1);
            if(setData == null) {
                System.out.println("节点不存在 --- 修改不成功");
            }else {
                System.out.println("节点存在 --- 修改成功");
            }*/
            
            
            /**
             * 删除节点
             * */
            
            /*zk.delete("/xx0000000008", -1);*/
            
            
            
            
            //关闭zookeeper的连接
            zk.close();
        }
    
    }

    监听设置

     1 public class ZKDemo2 {
     2     
     3     private static final String CONNECT_STRING = "hadoop1,hadoop2,hadoop3";
     4     private static final int SESSION_TIMEOUT = 5000;
     5     
     6     public static void main(String[] args) throws Exception {
     7 
     8         // 获取连接
     9         // 当前的这个匿名内部类不是已经添加好的监听, 以后只要是当前这个zk对象添加了任何的监听器响应了之后,都会调用这个process方法
    10         ZooKeeper zk = new ZooKeeper(CONNECT_STRING, SESSION_TIMEOUT, new Watcher() {
    11             
    12             @Override
    13             public void process(WatchedEvent event) {
    14                 
    15                 System.out.println("1111111111111111111111");
    16                 KeeperState state = event.getState();
    17                 String path = event.getPath();
    18                 EventType type = event.getType();
    19                 
    20                 System.out.println(state+"	"+path+"	"+type);
    21             }
    22         });
    23         
    24         System.out.println("2222222222222222222222");
    25         
    26         /**
    27          * 注册监听
    28          * 第二个参数有三种传法:
    29          * 
    30          * 1、false, 表示不使用监听器
    31          * 
    32          * 2、watcher对象, 表示当前的这次监听如果响应不了的话,就会回调当前这个watcher的process方法
    33          * 
    34          * 3、true,  表示如果当前的会话/zk 所注册或者添加的所有的监听器的响应,都会会调用 获取连接时  初始化的 监听器对象中 的 process 方法
    35          */
    36         zk.getData("/a/c", true, null);
    37         
    38         System.out.println("3333333333333333333333333333");
    39         Thread.sleep(5000);
    40         
    41         zk.setData("/a/c", "hehe666".getBytes(), -1);
    42         
    43         System.out.println("4444444444444444444444444444");
    44         
    45         zk.close();
    46         
    47         
    48         
    49     }
    50 
    51 }

    输出结果

    2222222222222222222222
    1111111111111111111111
    SyncConnected    null    None
    3333333333333333333333333333
    1111111111111111111111
    SyncConnected    /a/c    NodeDataChanged
    4444444444444444444444444444
  • 相关阅读:
    openerp domain 規則
    openerp创建动态视图-fields_view_get
    postgres时间转换函数
    UG NX9.0.0 for linux安装
    OpenERP 源码变更后数据库升级
    在Ubuntu 12 服务器上源码安装 OpenERP 8.0
    OpenERP7.0中非admin帐号新增其它用户问题
    有关WINDOWS XP登录密码的几种方法
    OpenERP对象字段定义的详解
    Openerp workflow 工作流批注模块
  • 原文地址:https://www.cnblogs.com/qingyunzong/p/8623844.html
Copyright © 2011-2022 走看看