ZooKeeper学习之路 (五)ZooKeeper API的简单使用 增删改查

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+"\t"+path+"\t"+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

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/107620.html原文链接:https://javaforall.net

(0)
上一篇 2022年3月13日 下午6:35
下一篇 2022年3月13日 下午7:00


相关推荐

  • 用 python 拟合等角螺线

    用 python 拟合等角螺线暗梁闻语燕 夜烛见飞蛾 飞蛾绕残烛 半夜人醉起 人类很早就注意到飞蛾扑火这一奇怪的现象 并且自作主张地赋予了飞蛾扑火很多含义 引申出为了理想和追求义无反顾 不畏牺牲的精神 但是 这种引申和比喻 征求过飞蛾的意见吗 后来 生物学家又提出来昆虫趋光性这一假说来解释飞蛾扑火 不过 这个假说似乎也不成立 如果昆虫真的追逐光明 估计地球上早就没有昆虫了 它们应该齐刷刷整体移民到太阳或月亮上去了 仔细观察飞蛾扑火 就会发现 昆虫们并不是笔直地飞向光源 而是绕着光源飞行 同时越来越接近光源 最终酿成了

    2026年3月19日
    4
  • 死锁的产生条件和预防处理[通俗易懂]

    死锁的产生条件和预防处理

    2022年1月21日
    66
  • python问号表达式_python中的问号表达式

    python问号表达式_python中的问号表达式我们知道 C 语句中存在问号表达式 例如下面 1a 2 gt 1 10 10 那么 Python 脚本语言中是否也存在类似的问号表达式呢 答案是肯定的 而且存在两种方式 方式 1 使用 ifelse 实现如下例 1b 5a 2ifb 4else1printa 方式 2 使用逻辑运算符实现如下例 1b 5a b 4and2or1 要注意 使用逻辑运算时要保证 and 后面的变量值

    2026年3月19日
    1
  • modelsim se 10.5安装教程

    modelsim se 10.5安装教程modelsimse10.5安装教程简介modelsim10.5是由mentorgraphics公司推出的一款具备强大的仿真性能与调试能力的HDL设计验证环境,也是唯一的单内核支持VHDL和Verilog混合仿真的仿真器,提供最友好的调试环境,采用直接优化的编译技术、Tcl/Tk技术、和单一内核仿真,并且具有个性化的图形界面和用户接口,能够为用户加快调试提供强有力的手段。而且软件全面支持VHDL和Verilog语言的IEEE标准,以及IEEEVITAL1076.4-95标准,与C语言功能调

    2022年5月10日
    52
  • mac idea 激活码[免费获取]

    (mac idea 激活码)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~M…

    2022年3月21日
    99
  • 递归函数及例题

    递归函数及例题定义 一种计算过程 如果其中每一步都要用到前一步或前几步的结果 称为递归的 用递归过程定义的函数 称为递归函数 例如连加 连乘及阶乘等 凡是递归的函数 都是可计算的 即能行的 古典递归函数 是一种定义在自然数集合上的函数 它的未知值往往要通过有限次运算回归到已知值来求出 故称为 递归 它是古典递归函数论的研究对象 条件 1 递归出口即结束条件 2 递推关系 例题 1 求任意正整数的逆置数示例 1 输入 890 输出解题思路 1 递归出口 n 0 时可结束 2 递推关系 使用变量

    2026年3月16日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号