• 一文了解ZooKeeper基础命令和应用


    ZooKeeper基础命令和应用

    本文ZooKeeper版本:3.8.0

    通过终端在zookeeper的bin打开新的session会话

    ajisun@ajisun-2 bin> sh zkCli.sh

    随便输入一些命令之后就会出现ZooKeeper的命令列表,如下

    下面详细介绍下主要API的使用

    config

    config

    查看仲裁成员的配置

    1. [zk: 1] config
    2. server.1=127.0.0.1:2888:3888:participant
    3. server.2=127.0.0.1:2898:3898:participant
    4. server.3=127.0.0.1:2988:3988:participant
    5. version=0

    ls

    ls [-s] [-w] [-R] path

    查看某个节点下的节点列表

    • -s: 显示节点信息数据
    • -w: 设置监听
    • -R: 递归展示子节点
    • path:某一节点名
    1. # 获取根节点列表
    2. [zk: 4] ls /
    3. [ajisun, zookeeper]
    4. # 显示根节点数据
    5. [zk: 5] ls -s /
    6. [ajisun, zookeeper]
    7. cZxid = 0x0
    8. ctime = Thu Jan 01 08:00:00 CST 1970
    9. mZxid = 0x0
    10. mtime = Thu Jan 01 08:00:00 CST 1970
    11. pZxid = 0x40000000a
    12. cversion = 36
    13. dataVersion = 0
    14. aclVersion = 0
    15. ephemeralOwner = 0x0
    16. dataLength = 0
    17. numChildren = 2
    18. # 递归展示根节点下的所有子节点
    19. [zk: 6] ls -R /
    20. /
    21. /ajisun
    22. /zookeeper
    23. /zookeeper/config
    24. /zookeeper/quota
    25. # 添加监听,当子节点发生变更的时候输出信息
    26. [zk: 7] ls /
    27. [ajisun, zookeeper]
    28. [zk: 8] create /ajisun/01
    29. Created /ajisun/01
    30. [zk: 9] ls -w /ajisun
    31. [01]
    32. [zk: 10] delete /ajisun/01
    33. WATCHER::
    34. WatchedEvent state:SyncConnected type:NodeChildrenChanged path:/ajisun

    如下命令代表查询的根节点下的所有节点

    create

    create [-s] [-e] [-c] [-t ttl] path [data] [acl]

    创建一个节点

    • -s: 顺序节点
    • -e: 临时节点
    • -c: 容器节点
    • -t: ttl节点(有过期时间的节点)
    • data: 存储在节点上的数据
    • acl: 访问权限相关,默认全部可见
    1. # 创建持久化节点 /ajisun
    2. [zk: 6] create /ajisun
    3. Created /ajisun
    4. # 创建持久化顺序节点 /ajisun(相同的节点名是自动加上了递增的序号来保证顺序的)
    5. [zk: 7] create -s /ajisun data
    6. Created /ajisun0000000005
    7. [zk: 8] create -s /ajisun data
    8. Created /ajisun0000000006
    9. # 创建临时节点 /ajisun_ephemeral(当这个session连接断开的时候就会删除此节点)
    10. [zk: 9] create -e /ajisun_e data
    11. Created /ajisun_e
    12. # 创建顺序临时节点 /ajisun_s_e
    13. [zk: 10] create -s -e /ajisun_s_e data
    14. Created /ajisun_s_e0000000008
    15. [zk: 11] create -s -e /ajisun_s_e data
    16. Created /ajisun_s_e0000000009
    17. # 创建容器节点(当容器节点的最后一个子节点被删除,此容器会被删除,但是并不是立即删除)
    18. [zk: 34] create -c /ajisun_c data
    19. Created /ajisun_c
    20. [zk: 35] create -c /ajisun_c/01 data
    21. Created /ajisun_c/01
    22. [zk: 36] ls /ajisun_c
    23. [01]
    24. [zk: 37] delete /ajisun_c/01
    25. [zk: 38] get /ajisun_c
    26. data
    27. [zk: 39] get /ajisun_c
    28. Node does not exist: /ajisun_c
    29. # 创建有过期时间的节点
    30. # 需要在配置文件zoo.cfg中手动开启这个功能,增加配置 extendedTypesEnabled=true
    31. [zk: 40] create -t 3000 /ajisun_t data
    32. Created /ajisun_t
    33. [zk: 41] get /ajisun_t
    34. data
    35. [zk: 42] get /ajisun_t
    36. Node does not exist: /ajisun_t

    get

    get [-s] [-w] path

    获取节点数据

    • -s: 显示节点信息
    • -w: 设置监听,节点发生变化的时候有监听信息输出
    1. [zk: 45] create /ajisun 纪先生笔记
    2. Created /ajisun
    3. # 直接获取节点数据
    4. [zk: 46] get /ajisun
    5. # 显示节点数据信息
    6. [zk: 47] get -s /ajisun
    7. # 节点内容数据
    8. cZxid = 0x400000015 # 节点创建的事务ID(序号递增,每次create操作都会+1,创建session也会+1)
    9. ctime = Thu Apr 28 17:09:13 CST 2022 # 节点创建的时间
    10. mZxid = 0x400000015 # 节点最后一个更新时的事务ID
    11. mtime = Thu Apr 28 17:09:13 CST 2022 # 节点最后一次更新的时间
    12. pZxid = 0x400000015 # 节点的子节点最后一次被修改的事务ID
    13. cversion = 0 # 节点的版本号,更改次数
    14. dataVersion = 0 # 节点数据的版本号
    15. aclVersion = 0 # 节点ACL的更改次数
    16. ephemeralOwner = 0x0 # 如果是临时节点,则表示该节点的会话session ID;如果是持久化节点,则是0
    17. dataLength = 15 # 节点数据的长度
    18. numChildren = 0 # 当前节点的子节点数
    19. # 节点设置监听,然后更改节点的数据
    20. [zk: 48] get -w /ajisun
    21. [zk: 49] set /ajisun
    22. WATCHER::
    23. WatchedEvent state:SyncConnected type:NodeDataChanged path:/ajisun
    24. [zk: 50] get /ajisun

    delete

    delete [-v version] path

    删除节点(可以根据版本号删除)

    • -v version : 版本号
    • path: 节点路径
    1. # 直接删除节点 /ajisun/02
    2. [zk: 54] ls /ajisun
    3. [01, 02]
    4. [zk: 55] delete /ajisun/02
    5. [zk: 56] ls /ajisun
    6. [01]
    7. #指定版本删除节点 /ajisun/01
    8. # 查看节点信息
    9. [zk: 57] ls -s /ajisun/01
    10. ......
    11. dataVersion = 0 # 此时版本是0
    12. ......
    13. # 更新节点信息 并查看
    14. [zk: 58] set /ajisun/01 ajisun01-01
    15. [zk: 59] ls -s /ajisun/01
    16. ......
    17. dataVersion = 1
    18. ......
    19. # 指定不存在的版本号删除,删除失败
    20. [zk: 60] delete -v 0 /ajisun/01
    21. version No is not valid : /ajisun/01
    22. # 指定正确版本号删除,删除成功
    23. [zk: 61] delete -v 1 /ajisun/01
    24. [zk: 62] ls /ajisun
    25. []

    deleteall

    deleteall path

    删除指定路径下的所有节点

    • path:节点路径
    1. [zk: 64] ls /
    2. [ajisun, zookeeper]
    3. # 删除 /ajisun节点
    4. [zk: 65] deleteall /ajisun
    5. [zk: 66] ls /
    6. [zookeeper]

    set

    set [-s] [-v version] path data

    更新指定节点的数据

    • -s:显示节点信息
    • -v version:指定版本(通过 CAS设置)
    • path:节点路径
    1. [zk: 77] create /ajisun 纪先生
    2. Created /ajisun
    3. # 设置并显示节点信息
    4. [zk: 78] set -s /ajisun 纪先生01
    5. cZxid = 0x40000001e
    6. ctime = Sun May 01 11:22:19 CST 2022
    7. mZxid = 0x40000001f
    8. mtime = Sun May 01 11:23:32 CST 2022
    9. pZxid = 0x40000001e
    10. cversion = 0
    11. dataVersion = 1 # 数据版本变成1
    12. aclVersion = 0
    13. ephemeralOwner = 0x0
    14. dataLength = 11
    15. numChildren = 0
    16. # 设置0版本失败
    17. [zk: 79] set -v 0 /ajisun 纪先生02
    18. version No is not valid : /ajisun
    19. # 设置1版本 成功
    20. [zk: 80] set -s -v 1 /ajisun 纪先生02
    21. cZxid = 0x40000001e
    22. ctime = Sun May 01 11:22:19 CST 2022
    23. mZxid = 0x400000021
    24. mtime = Sun May 01 11:28:05 CST 2022
    25. pZxid = 0x40000001e
    26. cversion = 0
    27. dataVersion = 2 # 版本号+1
    28. aclVersion = 0
    29. ephemeralOwner = 0x0
    30. dataLength = 11
    31. numChildren = 0
    32. 复制代码

    stat

    stat [-w] path

    查看节点的状态信息

    • -w:对节点设置监听
    • path:节点路径
    1. # 查看节点 /ajisun 信息
    2. [zk: 90] stat /ajisun
    3. cZxid = 0x40000001e
    4. ctime = Sun May 01 11:22:19 CST 2022
    5. mZxid = 0x400000021
    6. mtime = Sun May 01 11:28:05 CST 2022
    7. pZxid = 0x40000001e
    8. cversion = 0
    9. dataVersion = 2
    10. aclVersion = 0
    11. ephemeralOwner = 0x0
    12. dataLength = 11
    13. numChildren = 0
    14. # 节点设置监听(会话一)
    15. [zk: 91] stat -w /ajisun
    16. cZxid = 0x40000001e
    17. ctime = Sun May 01 11:22:19 CST 2022
    18. mZxid = 0x400000022
    19. mtime = Sun May 01 14:58:59 CST 2022
    20. pZxid = 0x40000001e
    21. cversion = 0
    22. dataVersion = 3
    23. aclVersion = 0
    24. ephemeralOwner = 0x0
    25. dataLength = 11
    26. numChildren = 0
    27. # 变更节点(会话二)
    28. [zk: 0] set /ajisun ajisun-stat
    29. # 收到通知(会话一)
    30. [zk: 92]
    31. WATCHER::
    32. WatchedEvent state:SyncConnected type:NodeDataChanged path:/ajisun

    removewatches

    removewatches path

    移除监听

    1. # 设置监听
    2. [zk: 93] get -w /ajisun
    3. ajisun-stat
    4. # 移除监听
    5. [zk: 94] removewatches /ajisun
    6. WATCHER::
    7. WatchedEvent state:SyncConnected type:DataWatchRemoved path:/ajisun

    history 和 redo

    history

    查看最近执行的11个命令

    redo cmdno

    重新执行某命令

    1. # 历史cmd记录
    2. [zk: 94] history
    3. 0 - stat -w /ajisun
    4. 1 - get /ajisun
    5. 2 - get -s /ajisun
    6. 3 - get -s /ajisun
    7. 4 - create /ajisun/01 01
    8. 5 - get -s /ajisun
    9. 6 - llll
    10. 7 - set -w /ajisun
    11. 8 - get -w /ajisun
    12. 9 - removewatches /ajisun
    13. 10 - history
    14. # 重做1命令
    15. [zk: 95] redo 1
    16. ajisun-stat

    以上是常用命令的详细说明和使用方式,包括增删改查以及设置监听等命令

  • 相关阅读:
    《web课程设计》基于HTML+CSS+JavaScript典的中医药大学网(11个页面)
    使用pushd高效的切换目录
    读写Raw文件
    Windows 下安装NPM
    利用向日葵和微信/腾讯会议实现LabVIEW远程开发
    深度学习基础-2
    Docker基础教程
    C++ move()排序函数用法详解(深入了解,一文学会)
    运动耳机什么牌子的好?运动耳机推荐排名
    4405. 统计子矩阵
  • 原文地址:https://blog.csdn.net/LBWNB_Java/article/details/126221862