找回密码
 立即注册
首页 业界区 安全 【Zookeeper命令】原生客户端命令详解

【Zookeeper命令】原生客户端命令详解

蓬森莉 2025-6-10 09:20:58
Zookeeper原生客户端命令详解

Zookeeper提供了一套丰富的命令行工具zkCli.sh,用于直接与Zookeeper服务交互。以下是完整的原生客户端命令操作指南,包含详细注释和示例解释。
一、连接与基本操作

1.1 连接Zookeeper服务
  1. # 基本连接方式
  2. ./zkCli.sh -server <host:port>
  3. # 示例:连接本地Zookeeper
  4. ./zkCli.sh -server 127.0.0.1:2181
  5. # 连接时指定超时时间(毫秒)
  6. ./zkCli.sh -server 127.0.0.1:2181 -timeout 5000
复制代码
1.2 帮助命令
  1. # 查看所有可用命令
  2. help
  3. # 查看特定命令帮助
  4. help <command>
  5. # 示例:
  6. help create
复制代码
二、节点操作命令

2.1 创建节点
  1. # 基本语法
  2. create [-s] [-e] [-c] [-t ttl] path [data] [acl]
  3. # 创建持久节点
  4. create /test "test data"
  5. # 结果:Created /test
  6. # 创建临时节点(会话结束自动删除)
  7. create -e /temp-node "temp data"
  8. # 创建顺序节点(自动追加序号)
  9. create -s /seq-node "seq data"
  10. # 结果:Created /seq-node0000000001
  11. # 创建带TTL的节点(单位毫秒)
  12. create -t 5000 /ttl-node "ttl data"
  13. # 递归创建父节点(需要Zookeeper 3.5+)
  14. create /parent/child/node "data" true
复制代码
2.2 查看节点
  1. # 列出节点
  2. ls [-s] [-w] [-R] path
  3. # 示例:
  4. ls /
  5. # 结果:[zookeeper, test, temp-node]
  6. # 递归列出所有子节点
  7. ls -R /
  8. # 查看节点详细信息
  9. ls -s /
  10. # 结果:
  11. # [zookeeper, test, temp-node]
  12. # cZxid = 0x200000002
  13. # ctime = Wed Jan 01 00:00:00 UTC 2023
  14. # mZxid = 0x200000002
  15. # mtime = Wed Jan 01 00:00:00 UTC 2023
  16. # pZxid = 0x200000002
  17. # cversion = 0
  18. # dataVersion = 0
  19. # aclVersion = 0
  20. # ephemeralOwner = 0x0
  21. # dataLength = 9
  22. # numChildren = 0
复制代码
2.3 获取节点数据
  1. # 基本语法
  2. get [-s] [-w] path
  3. # 示例:
  4. get /test
  5. # 结果:
  6. # test data
  7. # cZxid = 0x200000002
  8. # ...
  9. # 获取数据并设置watch
  10. get -w /test
  11. # 获取详细信息
  12. get -s /test
复制代码
2.4 修改节点数据
  1. # 基本语法
  2. set [-s] [-v version] path data
  3. # 示例:
  4. set /test "new data"
  5. # 带版本号修改(乐观锁)
  6. set -v 1 /test "versioned data"
复制代码
2.5 删除节点
  1. # 基本语法
  2. delete [-v version] path
  3. # 示例:
  4. delete /test
  5. # 带版本号删除
  6. delete -v 1 /test
  7. # 递归删除(3.5+版本)
  8. deleteall path
复制代码
三、高级操作命令

3.1 Watch监控
  1. # 设置数据变化的watch
  2. get -w /test
  3. # 设置子节点变化的watch
  4. ls -w /parent
  5. # 触发watch后,客户端会收到类似通知:
  6. # WATCHER::
  7. # WatchedEvent state:SyncConnected type:NodeDataChanged path:/test
复制代码
3.2 ACL权限控制
  1. # 查看ACL
  2. getAcl /test
  3. # 设置ACL
  4. setAcl /test world:anyone:crwda
  5. # 创建带ACL的节点
  6. create /secure-node "data" world:anyone:r
复制代码
3.3 配额管理
  1. # 设置配额
  2. setquota -n|-b val path
  3. # 示例:限制子节点数量
  4. setquota -n 10 /parent
  5. # 查看配额
  6. listquota /parent
  7. # 删除配额
  8. delquota /parent
复制代码
3.4 四字命令

通过telnet或nc发送四字命令:
  1. # 服务器状态
  2. echo stat | nc localhost 2181
  3. # 监控摘要
  4. echo mntr | nc localhost 2181
  5. # 客户端连接
  6. echo cons | nc localhost 2181
  7. # 环境变量
  8. echo envi | nc localhost 2181
  9. # 健康检查
  10. echo ruok | nc localhost 2181
  11. # 响应"imok"表示正常
复制代码
四、实用操作示例

4.1 创建完整目录结构
  1. # 创建多级目录
  2. create /app ""
  3. create /app/config ""
  4. create /app/config/database "mysql://user:pass@host:3306"
  5. create /app/config/cache "redis://host:6379"
  6. # 验证结构
  7. ls -R /app
复制代码
4.2 实现简单的配置管理
  1. # 存储配置
  2. create /configs/app1/server.port "8080"
  3. create /configs/app1/db.url "jdbc:mysql://localhost:3306/mydb"
  4. # 获取配置
  5. get /configs/app1/server.port
  6. # 结果:8080
  7. # 更新配置
  8. set /configs/app1/server.port "8081"
复制代码
4.3 监控配置变化
  1. # 终端1:设置watch并等待
  2. get -w /configs/app1/server.port
  3. # 终端2:修改数据
  4. set /configs/app1/server.port "8082"
  5. # 终端1将收到通知:
  6. # WATCHER::
  7. # WatchedEvent state:SyncConnected type:NodeDataChanged path:/configs/app1/server.port
复制代码
4.4 临时节点实现服务注册
  1. # 服务1注册
  2. create -e /services/service1/node1 "host1:8080"
  3. # 服务2注册
  4. create -e /services/service1/node2 "host2:8080"
  5. # 查看可用服务
  6. ls /services/service1
  7. # 结果:[node1, node2]
  8. # 当服务下线时,对应临时节点会自动删除
复制代码
五、命令参考表

命令描述示例create创建节点create /node "data"delete删除节点delete /nodeset设置节点数据set /node "new data"get获取节点数据get /nodels列出子节点ls /stat查看节点状态stat /nodesetAcl设置访问控制setAcl /node world:anyone:crwagetAcl获取访问控制getAcl /nodehistory查看命令历史historyredo重做命令redo 1 (执行历史记录中第1条命令)connect连接服务器connect 127.0.0.1:2181close关闭连接closequit退出客户端quit六、注意事项


  • 节点路径:所有路径必须以/开头,且不能以/结尾(除根路径外)
  • 临时节点:不能有子节点,创建它们的客户端会话结束时自动删除
  • 顺序节点:实际路径名会附加一个10位数字序号(如/node0000000001)
  • 版本控制:每次修改数据版本号+1,可用于乐观锁控制
  • Watch特性:Watch是一次性的,触发后需要重新设置
  • ACL权限:生产环境应设置适当的访问控制
通过掌握这些原生客户端命令,您可以有效地管理和监控Zookeeper中的数据,为分布式系统提供可靠的协调服务基础。

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册