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 常用命令

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

3、Java客户端操作

3.1 创建项目

创建一个maven 项目zk-demo

3.2 添加依赖

修改pom.xml

java 复制代码
 <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>

3.3 代码部分

java 复制代码
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);
    }
}
相关推荐
执笔诉情殇〆4 分钟前
前后端分离(java) 和 Nginx在服务器上的完整部署方案(redis、minio)
java·服务器·redis·nginx·minio
YuTaoShao8 分钟前
【LeetCode 热题 100】24. 两两交换链表中的节点——(解法一)迭代+哨兵
java·算法·leetcode·链表
CodeWithMe29 分钟前
【Note】《Kafka: The Definitive Guide》第11章:Stream Processing
分布式·kafka
程序员的世界你不懂31 分钟前
(20)Java+Playwright自动化测试- 操作鼠标拖拽 - 上篇
java·python·计算机外设
AI360labs_atyun44 分钟前
Java在AI时代的演进与应用:一个务实的视角
java·开发语言·人工智能·科技·学习·ai
不像程序员的程序媛2 小时前
redis的一些疑问
java·redis·mybatis
知其然亦知其所以然2 小时前
Java 面试高频题:GC 到底回收了什么、怎么回收、啥时候回收?
java·后端·面试
Z_W_H_2 小时前
【SpringBoot】 整合MyBatis+Postgresql
java·spring boot·后端
nbsaas-boot2 小时前
多租户架构下的多线程处理实践指南
java·开发语言·spring
青云交2 小时前
Java 大视界 -- Java 大数据在智能医疗远程手术机器人操作数据记录与分析中的应用(342)
java·大数据·数据记录·远程手术机器人·基层医疗·跨院协作·弱网络适配