• ZooKeeper基础命令和Java客户端操作


    1、zkCli的常用命令操作

    (1)Help
    在这里插入图片描述

    (2)ls 使用 ls 命令来查看当前znode中所包含的内容
    (3)ls2查看当前节点数据并能看到更新次数等数据
    (4)stat查看节点状态
    (5)set
    1)设置节点的具体值
    2)set 节点 value值 set /test atguigu
    (6)get
    1)获得节点的值
    2)get 节点
    (7)create
    1)普通创建 create /test demo001
    2)-s含有序列
    3)-e 临时
    (8)delete 删除无子节点的目录
    (9)rmr 递归删除

    2 四字命令

    2.1 是什么?

    zookeeper支持某些特定的四字命令,他们大多是用来查询ZK服务的当前状态及相关信息的。
    通过telnet或nc向zookeeper提交相应命令,如:echo ruok | nc 127.0.0.1 2181
    运行公式:echo 四字命令 | nc 主机IP zookeeper端口

    2.2 常用命令

    ruok:测试服务是否处于正确状态。如果确实如此,那么服务返回“imok ”,否则不做任何相应
    stat:输出关于性能和连接的客户端的列表
    conf:输出相关服务配置的详细信息
    cons:列出所有连接到服务器的客户端的完全的连接 /会话的详细信息。包括“接受 / 发送”的包数量、会话id 、操作延迟、最后的操作执行等等信息
    dump:列出未经处理的会话和临时节点
    envi:输出关于服务环境的详细信息(区别于conf命令)
    reqs:列出未经处理的请求
    wchs:列出服务器watch的详细信息
    wchc:通过session列出服务器watch的详细信息,它的输出是一个与watch相关的会话的列表
    wchp:通过路径列出服务器 watch的详细信息。它输出一个与 session相关的路径
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    3、Java客户端操作

    3.1 创建项目

    创建一个maven 项目zk-demo
    在这里插入图片描述

    3.2 添加依赖

    修改pom.xml

     <dependencies>
       <!-- https://mvnrepository.com/artifact/com.101tec/zkclient -->
       <dependency>
         <groupId>com.101tec</groupId>
         <artifactId>zkclient</artifactId>
         <version>0.10</version>
       </dependency>
       <!-- https://mvnrepository.com/artifact/org.apache.zookeeper/zookeeper -->
       <dependency>
         <groupId>org.apache.zookeeper</groupId>
         <artifactId>zookeeper</artifactId>
         <version>3.4.9</version>
       </dependency>
       <dependency>
         <groupId>log4j</groupId>
         <artifactId>log4j</artifactId>
         <version>1.2.17</version>
       </dependency>
      </dependencies>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    3.3 代码部分

    public class ZkDemo {
        private static final String CONNECTSTRING = "192.168.200.129:2181";
        private static final String PATH = "/atguigu";
        private static final int SESSION_TIMEOUT = 50*1000;
    
        // 连接zk 方法
        public ZooKeeper startZk() throws Exception{
            //
            return new ZooKeeper(CONNECTSTRING, SESSION_TIMEOUT, new Watcher() {
                @Override
                public void process(WatchedEvent event) {
    
                }
            });
        }
        // 关闭zk 方法
        public void stopZk(ZooKeeper zooKeeper) throws Exception{
            if (zooKeeper!=null){
                zooKeeper.close();
            }
        }
    
        /**
         * 创建节点
              * @param zk zk 对象
         * @param path 节点名称
         * @param nodeValue 节点数据
         * @throws Exception
         */
        public void createZNode(ZooKeeper zk,String path,String nodeValue) throws Exception{
            // acl 表示权限 OPEN_ACL_UNSAFE 公开的权限
            zk.create(path,nodeValue.getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
        }
    
        // 获取节点
        public String getZNode(ZooKeeper zk,String path)throws Exception{
            byte[] byteArray = zk.getData(path, false, new Stat());
            String data = new String(byteArray);
            System.out.println(data);
            return data;
        }
    
        // 调用
        public static void main(String[] args) throws Exception {
            ZkDemo zkDemo = new ZkDemo();
            // 获取连接
            ZooKeeper zk = zkDemo.startZk();
    
            String zNode = null;
            Stat stat = zk.exists(PATH, false);
            if (stat==null){
                // 创建节点
                zkDemo.createZNode(zk,PATH,"java");
            }else {
                System.out.println("***********znode has already ok***********");
            }
            // 获取节点数据
            zNode = zkDemo.getZNode(zk, PATH);
            System.out.println("**********result:"+zNode);
            // 关闭连接
            zkDemo.stopZk(zk);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
  • 相关阅读:
    哈希表4——快乐数
    35 个 Spark 常用算子总结
    基于安卓android微信小程序的远景民宿预订小程序
    解析gin框架部分收获
    word2vec包中cbow模型--学习笔记
    【云原生】容器技术发展
    2.单链表练习
    Linux磁盘扩容(加硬盘法)
    好奇喵 | Tor浏览器——访问.onion网址,揭开Dark Web的神秘面纱
    【现代信号处理第六次作业】
  • 原文地址:https://blog.csdn.net/qq_39311377/article/details/132524995