【Zookeeper命令】原生客户端命令详解
Zookeeper原生客户端命令详解Zookeeper提供了一套丰富的命令行工具zkCli.sh,用于直接与Zookeeper服务交互。以下是完整的原生客户端命令操作指南,包含详细注释和示例解释。
一、连接与基本操作
1.1 连接Zookeeper服务
# 基本连接方式
./zkCli.sh -server <host:port>
# 示例:连接本地Zookeeper
./zkCli.sh -server 127.0.0.1:2181
# 连接时指定超时时间(毫秒)
./zkCli.sh -server 127.0.0.1:2181 -timeout 50001.2 帮助命令
# 查看所有可用命令
help
# 查看特定命令帮助
help <command>
# 示例:
help create二、节点操作命令
2.1 创建节点
# 基本语法
create [-s] [-e] [-c] [-t ttl] path
# 创建持久节点
create /test "test data"
# 结果:Created /test
# 创建临时节点(会话结束自动删除)
create -e /temp-node "temp data"
# 创建顺序节点(自动追加序号)
create -s /seq-node "seq data"
# 结果:Created /seq-node0000000001
# 创建带TTL的节点(单位毫秒)
create -t 5000 /ttl-node "ttl data"
# 递归创建父节点(需要Zookeeper 3.5+)
create /parent/child/node "data" true2.2 查看节点
# 列出节点
ls [-s] [-w] [-R] path
# 示例:
ls /
# 结果:
# 递归列出所有子节点
ls -R /
# 查看节点详细信息
ls -s /
# 结果:
#
# cZxid = 0x200000002
# ctime = Wed Jan 01 00:00:00 UTC 2023
# mZxid = 0x200000002
# mtime = Wed Jan 01 00:00:00 UTC 2023
# pZxid = 0x200000002
# cversion = 0
# dataVersion = 0
# aclVersion = 0
# ephemeralOwner = 0x0
# dataLength = 9
# numChildren = 02.3 获取节点数据
# 基本语法
get [-s] [-w] path
# 示例:
get /test
# 结果:
# test data
# cZxid = 0x200000002
# ...
# 获取数据并设置watch
get -w /test
# 获取详细信息
get -s /test2.4 修改节点数据
# 基本语法
set [-s] [-v version] path data
# 示例:
set /test "new data"
# 带版本号修改(乐观锁)
set -v 1 /test "versioned data"2.5 删除节点
# 基本语法
delete [-v version] path
# 示例:
delete /test
# 带版本号删除
delete -v 1 /test
# 递归删除(3.5+版本)
deleteall path三、高级操作命令
3.1 Watch监控
# 设置数据变化的watch
get -w /test
# 设置子节点变化的watch
ls -w /parent
# 触发watch后,客户端会收到类似通知:
# WATCHER::
# WatchedEvent state:SyncConnected type:NodeDataChanged path:/test3.2 ACL权限控制
# 查看ACL
getAcl /test
# 设置ACL
setAcl /test world:anyone:crwda
# 创建带ACL的节点
create /secure-node "data" world:anyone:r3.3 配额管理
# 设置配额
setquota -n|-b val path
# 示例:限制子节点数量
setquota -n 10 /parent
# 查看配额
listquota /parent
# 删除配额
delquota /parent3.4 四字命令
通过telnet或nc发送四字命令:
# 服务器状态
echo stat | nc localhost 2181
# 监控摘要
echo mntr | nc localhost 2181
# 客户端连接
echo cons | nc localhost 2181
# 环境变量
echo envi | nc localhost 2181
# 健康检查
echo ruok | nc localhost 2181
# 响应"imok"表示正常四、实用操作示例
4.1 创建完整目录结构
# 创建多级目录
create /app ""
create /app/config ""
create /app/config/database "mysql://user:pass@host:3306"
create /app/config/cache "redis://host:6379"
# 验证结构
ls -R /app4.2 实现简单的配置管理
# 存储配置
create /configs/app1/server.port "8080"
create /configs/app1/db.url "jdbc:mysql://localhost:3306/mydb"
# 获取配置
get /configs/app1/server.port
# 结果:8080
# 更新配置
set /configs/app1/server.port "8081"4.3 监控配置变化
# 终端1:设置watch并等待
get -w /configs/app1/server.port
# 终端2:修改数据
set /configs/app1/server.port "8082"
# 终端1将收到通知:
# WATCHER::
# WatchedEvent state:SyncConnected type:NodeDataChanged path:/configs/app1/server.port4.4 临时节点实现服务注册
# 服务1注册
create -e /services/service1/node1 "host1:8080"
# 服务2注册
create -e /services/service1/node2 "host2:8080"
# 查看可用服务
ls /services/service1
# 结果:
# 当服务下线时,对应临时节点会自动删除五、命令参考表
命令描述示例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中的数据,为分布式系统提供可靠的协调服务基础。
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页:
[1]