zookeeper客户端命令行操作、节点类型及监听器

ops/2024/9/25 21:26:22/

zookeeper_0">zookeeper客户端命令行操作、节点类型及监听器

文档

  1. linux安装java -centos安装java -linux配置java环境变量
  2. zookeeper单机安装
  3. zookeeper集群安装
  4. zookeeper客户端命令行操作、节点类型及监听器
  5. zookeeper集群写数据原理
  6. java操作zookeeper

zookeeper_14">启动zookeeper客户端

  1. 启动客户端,默认服务器为localhost

    ./zkCli.sh
    

    输出信息:[zk: localhost:2181(CONNECTED) 0]

  2. 启动客户端,指定服务器

    ./zkCli.sh -server 192.168.145.132:2181
    

    输出信息:[zk: 192.168.145.132:2181(CONNECTED) 0]

  3. 退出

    quit
    

节点类型

持久(Persistent):客户端和服务器端断开连接后,创建的节点不删除
持久有序号节点
持久无序号节点短暂(Ephemeral):客户端和服务器端断开连接后,创建的节点自动删除
临时有序号节点
临时无序号节点有序号节点
节点名称后拼接顺序编号
创建有序号节点命令(节点名称相同)可重复执行,节点名称后拼接的顺序编号增大
重复执行实际是创建不同的节点,前缀相同,后面的顺序编号不同创建有序号节点时,节点名称后会拼接顺序编号,顺序号是一个单调递增的计数器,由父节点维护发现:自增的序号与父节点下子节点的数量有关,并且无论子节点是否有序号使用场景:在分布式系统中,顺序号可以被用于为所有的事件进行全局排序,这样客户端可以通过顺序号推断事件的顺序

客户端命令行操作命令示例

  1. 查看/节点下的子节点

    ls /
    

    输出信息

    [zookeeper]
    
  2. 查看/节点下的子节点,及当前节点的详细信息

    ls -s /
    

    输出信息

    # 创建节点的事务id,[zookeeper]为子节点列表
    [zookeeper]cZxid = 0x0
    # znode被创建时的毫秒值(从1970年开始)
    ctime = Thu Jan 01 08:00:00 CST 1970
    # znode最后更新的事务id
    mZxid = 0x0
    # znode最后修改的毫秒值(从1970年开始)
    mtime = Thu Jan 01 08:00:00 CST 1970
    # znode最后更新的子节点zxid
    pZxid = 0x0
    # znode子节点变化的版本,znode子节点修改次数
    cversion = -1
    # znode数据变化的版本
    dataVersion = 0
    # znode访问控制列表的变化号
    aclVersion = 0
    # 如果是临时节点,这个是znode拥有者的session id,如果不是临时节点则是0
    ephemeralOwner = 0x0
    # znode的数据长度
    dataLength = 0
    # znode子节点数量
    numChildren = 1
    
  3. 创建一个永久节点:/sanguo,节点信息:diaochan

    create /sanguo "diaochan"
    
  4. 创建一个永久节点:/sanguo/shuguo,节点信息:liubei

    create /sanguo/shuguo "liubei"
    

    输出信息

    Created /sanguo/shuguo
    
  5. 查看/sanguo节点信息

    get /sanguo
    

    输出信息

    diaochan
    
  6. 查看/sanguo节点详细信息

    get -s /sanguo
    

    输出信息

    diaochan
    cZxid = 0x100000004
    ctime = Sat Aug 24 17:25:32 CST 2024
    mZxid = 0x100000004
    mtime = Sat Aug 24 17:25:32 CST 2024
    pZxid = 0x100000005
    cversion = 1
    dataVersion = 0
    aclVersion = 0
    ephemeralOwner = 0x0
    dataLength = 8
    numChildren = 1
    
  7. 创建一个永久节点:/sanguo/weiguo,节点信息:caocao

    create /sanguo/weiguo "caocao"
    
  8. 创建一个带序号的永久节点:/sanguo/weiguo/zhangliao

    create -s /sanguo/weiguo/zhangliao "zhangliao"
    

    输出信息

    Created /sanguo/weiguo/zhangliao0000000000
    
  9. 带序号的节点可重复创建,创建相同的节点:/sanguo/weiguo/zhangliao

    create -s /sanguo/weiguo/zhangliao "zhangliao"
    

    输出信息

    Created /sanguo/weiguo/zhangliao0000000001
    
  10. 创建一个临时节点:/sanguo/wuguo,节点信息:zhouyu

    create -e /sanguo/wuguo "zhouyu"
    

    输出信息

    Created /sanguo/wuguo
    
  11. 创建一个带序号的临时节点:/sanguo/wuguo

    create -e -s /sanguo/wuguo
    

    输出信息

    Created /sanguo/wuguo0000000003
    
  12. 查看节点/sanguo下的子节点

    ls /sanguo
    

    输出信息

    [shuguo, weiguo, wuguo, wuguo0000000003]
    
  13. 退出,验证临时节点是否会消失

    quit
    
  14. 重新连接

    ./zkCli.sh -server 192.168.145.132:2181
    
  15. 查看节点/sanguo下的子节点

    ls /sanguo
    

    输出信息,此时临时节点已自动删除

    [shuguo, weiguo]
    
  16. 修改节点的值,修改/sanguo/weiguo的值,设置值为:simayi

    set /sanguo/weiguo "simayi"
    
  17. 查看节点状态,查看/sanguo节点状态

    stat /sanguo
    

    输出信息

    cZxid = 0x100000004
    ctime = Sat Aug 24 17:25:32 CST 2024
    mZxid = 0x100000004
    mtime = Sat Aug 24 17:25:32 CST 2024
    pZxid = 0x100000011
    cversion = 10
    dataVersion = 0
    aclVersion = 0
    ephemeralOwner = 0x0
    dataLength = 8
    numChildren = 2
    
  18. 创建一个永久节点:/sanguo/jin,节点信息:simayi

    create /sanguo/jin "simayi"
    
  19. 删除一个节点,删除/sanguo/jin节点,该节点下不能有子节点

    delete /sanguo/jin
    
  20. 递归删除节点,删除/sanguo节点及子节点

    deleteall /sanguo
    

监听器原理

zookeeper客户端去服务端注册,监听节点或节点数据的变化1.首先要有一个main()线程
2.在main线程中创建zookeeper客户端,再创建两个线程,一个负责网络连接通信(connect),一个负责监听(listener)
3.通过connect线程将注册的监听事件发送给zookeeper
4.zookeeper将注册的监听事件添加到监听列表中
5.Zookeeper监听到有数据或路径变化,就会将这个消息发送给listener线程
6.listener线程内部调用process()方法

监听器命令行操作

  1. 创建一个永久节点:/sanguo,节点信息:diaochan

    create /sanguo "diaochan"
    
监听节点值的变化
  1. 连接客户端1,设置监听,监听节点:/sanguo,监听节点值的变化

    get -w /sanguo
    
  2. 连接客户端2,改变/sanguo节点的节点值,同时观察客户端1

    set /sanguo "lvbu"
    
  3. 客户端1输出信息

    WATCHER::WatchedEvent state:SyncConnected type:NodeDataChanged path:/sanguo
    
  4. 注意:注册一次,只能监听一次,想再次监听,需要再次注册

监听节点下子节点的变化(仅是直接的子节点)
  1. 连接客户端1,设置监听,监听节点:/sanguo,监听子节点的变化

    ls -w /sanguo
    
  2. 连接客户端2,在/sanguo节点下新增子节点,同时观察客户端1

    create /sanguo/jin "simayi"
    
  3. 客户端1输出信息

    WATCHER::WatchedEvent state:SyncConnected type:NodeChildrenChanged path:/sanguo
    
  4. 注意:注册一次,只能监听一次,想再次监听,需要再次注册

参考资料

  • 尚硅谷

http://www.ppmy.cn/ops/102358.html

相关文章

无线通信频率分配

首先看看无线电信号的频谱如何划分: 一、5G NR 3GPP已指定5G NR 支持的频段列表,5G NR频谱范围可达100GHz,指定了两大频率范围: ① Frequency range 1 (FR1):就是我们通常讲的6GHz以下频段 频率…

【neo4j】neo4j-Desktop安装

Neo4j是一个高性能的图数据库,它使用图形结构来存储和处理数据。它是一个开源的、完全事务的数据库,专门设计用于大规模的图形数据。Neo4j使用一种名为Cypher的查询语言来处理图形数据,使用户能够方便地进行复杂的图形查询和分析。 Neo4j的主…

hadoop生态圈(四)- MapReduce

目录 MapReduce的基本原理 MapReduce流程图 Map阶段执行流程 Reduce阶段执行流程 Shuffle机制 MapReduce解决的是海量数据计算 MapReduce的思想核心是“分而治之”。就是把一个复杂的问题按一定的“分解”方法分为规模较小的若干部分,然后逐个解决,…

【视频讲解】SMOTEBoost、RBBoost和RUSBoost不平衡数据集的集成分类酵母数据集、治癌候选药物|数据分享...

全文链接:https://tecdat.cn/?p37502 分析师:Zilin Wu 在当今的大数据时代,科研和实际应用中常常面临着海量数据的处理挑战。在本项目中,我们拥有上万条数据,这既是宝贵的资源,也带来了诸多难题。一方面&a…

window下kafka3启动多个

准备工作 我们先安装好kafka,并保证启动成功,可参考文章Windows下安装Kafka3-CSDN博客 复制kafka安装文件 kafka3已经内置了zookeeper,所以直接复制就行了 修改zookeeper配置文件 这里我们修改zookeeper配置文件,主要是快照地址…

.NET_web前端框架_layui_栅格布局

基础概念 layui:用于简化前端编写的框架。响应式布局(Responsive Layout):一种网页设计方法,使网页能够根据不同设备的屏幕尺寸和分辨率自动调整其内容和布局。栅格布局(Grid Layout):一种网页设计布局方法&#xff0c…

Android 消息机制Handler完全解析(一)

提到Handler相信即使你是刚入行的android开发也会用过,可能你会觉得很简单,但是Handler中包含的内容真的不是你理解的那么简单,可能有些工作3-5年的同学也没有对其有很深入的了解。但Handler在android中的地位非常重要,并且几乎是…

Aiseesoft Data Recovery for Mac:专业级数据恢复解决方案

在数字时代,数据的安全与恢复成为了我们不可忽视的重要议题。对于Mac用户而言,Aiseesoft Data Recovery无疑是一款值得信赖的专业级数据恢复软件。它以其强大的恢复能力、简洁的操作界面以及广泛的兼容性,在众多数据恢复工具中脱颖而出&#…