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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • C3P0连接池的配置与使用[通俗易懂]

    C3P0连接池的配置与使用[通俗易懂]1、下载c3p0-0.9.1.2.jar下载地址:http://download.csdn.net/detail/chunxiaqiudong5/96619222、添加配置文件c3p0-config.xml3、配置文件内容如下:1030100

    2022年6月1日
    25
  • Java正则表达式 匹配中文字符[通俗易懂]

    Java正则表达式 匹配中文字符[通俗易懂]若要用JAVA正则表达式匹配中文字符,主要是了解中文字符的编码。

    2022年6月18日
    85
  • windows无法连接到打印机错误为0x000000011b_无法连接到打印机错误0000011b

    windows无法连接到打印机错误为0x000000011b_无法连接到打印机错误0000011b最近打印机连不上,查了下网上的资料,发现是Windows10的一个更新bug导致,但是按照网上的方法视乎重启后windows会强制更新,还是无法彻底解决问题。于是在继续查找到相关资料,现在将解决方法记录下来。注意:以下操作只需要在打印机连接的那台电脑上修改即可,其他电脑无需操作一、打开注册表按住win和R键,输入regedit打开注册表二、修改依次打开[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSe…

    2022年9月10日
    0
  • 架构设计(1)-谈谈架构

    架构设计(1)-谈谈架构1、什么是架构和架构本质在软件行业,对于什么是架构,都有很多的争论,每个人都有自己的理解。此君说的架构和彼君理解的架构未必是一回事。因此我们在讨论架构之前,我们先讨论架构的概念定义,概念是人认识这个世界的基础,并用来沟通的手段,如果对架构概念理解不一样,那沟通起来自然不顺畅。Linux有架构,MySQL有架构,JVM也有架构,使用Java开…

    2022年7月11日
    26
  • RPC协议了解

    RPC协议了解1.RPC概述RPC(RemoteProcedureCallProtocol)远程过程调用协议。通俗的描述是:客户端在不知道调用细节的情况下,调用存在于远程计算机上的某个过程或函数,就像调用本地应用程序中的一样。正确的描述是:一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。2.RPC特点:2.1)RPC是协议:协议意味着规范。目前典型的RPC实现包括Dubbo、Thrift、Herrty等。但这些实现往往都会附加其他重要功能,例如Dubbo还包括服务管理、访问权限

    2022年5月19日
    58
  • 武道释义 · 零散

    武道释义 · 零散

    2022年1月29日
    39

发表回复

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

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