zookeeper 常用操作
Posted 渔夫数据库笔记
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了zookeeper 常用操作相关的知识,希望对你有一定的参考价值。
1.zk 启停操作
1)启动zk
./zkServer.sh start zoo1.cfg
#如果使用的是conf 目录下的默认配置文件 zoo.cfg,可以直接执行 ./zkServer.sh start 启动,否则报如下错误
grep: /usr/local/zookeeper/bin/../conf/zoo.cfg: No such file or directory
2)停止zk
./zkServer.sh stop
3)显示zk状态
./zkServer.sh status
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: standalone
2.连接ck
./zkCli.sh -server 127.0.0.1:2181
3.创建znode
create [-s] [-e] [-c] [-t ttl] path [data] [acl]
3.1 创建持久节点
1)创建空节点
create /test_shao
2)创建节点时同时指定节点内容
create /test_shao 测试内容
3.2 创建顺序持久节点
[zk: 127.0.0.1:2181(CONNECTED) 51] create -s /test_shao/test
Created /test_shao/test0000000003
[zk: 127.0.0.1:2181(CONNECTED) 52] create -s /test_shao/test
Created /test_shao/test0000000004
##不加 -s 参数第二次创建会报已存在。-s 参数会默认给创建的节点加上序号
3.3 创建临时节点
create -e /test_shao/test_e_node_xx 这是一个临时节点
getEphemerals /test_shao
#查看 /test_shao 节点下的所有临时节点
3.4 创建顺序临时节点
[zk: 127.0.0.1:2181(CONNECTED) 54] create -es /test_shao/test
Created /test_shao/test0000000005
[zk: 127.0.0.1:2181(CONNECTED) 55] create -es /test_shao/test
Created /test_shao/test0000000006
4.删除znode
delete [-v version] path
deleteall path [-b batch size]
1) delete 删除没有任何子节点的节点
delete /test_shao
#如果/test_shao 节点有子节点的话,报 Node not empty: /test_shao,如果要删除该节点及其子节点可以使用 deleteall
2) deleteall 删除节点及其子节点
zk: 127.0.0.1:2181(CONNECTED) 19] ls -R /test_shao
/test_shao
/test_shao/test_node_xx
[zk: 127.0.0.1:2181(CONNECTED) 20] delete /test_shao
Node not empty: /test_shao
5. 设置或者修改节点内容
set [-s] [-v version] path data
set /test_shao/test_node_xx "修改后的内容"
#如果节点本身没有内容,则给该节点添加相关内容,如果已有内容,则把之前的内容覆盖为当前内容
#set 添加多行数据
如果 set 多行数据,数据使用双引号
6.ACL 权限控制
6.1 ACL特性
1)ZooKeeper 的权限控制是基于每个znode节点的,需要对每个节点设置权限
2)每个 znode 支持设置多种权限控制方案和多个权限
3)子节点不会继承父节点的权限,客户端无权访问某节点,但可能可以访问它的子节点
6.2 查看节点 ACL
getAcl /test_shao/test_node_xx
'world,'anyone
: cdrwa
#这是所有节点的默认acl,表示所有连接到zookeeper 的客户端都能对该节点进行cdrwa操作(即拥有所有权限)
6.3 设置 world 权限模式
1)添加或者修改 world
setAcl /test_shao/test_node_xx world:anyone:cdra
[zk: localhost:2181(CONNECTED) 22] getAcl /test_shao/test_node_xx
'world,'anyone
: cdra
#当前设置会覆盖节点之前的权限(注意不要轻易去掉节点的a权限,否则所有人都无法对其进行权限设置)
2)取消 world 权限模式的所有权限
setAcl /test_shao/test_node_xx world:anyone:
6.4 设置 ip 权限模式
1)指定ip地址
[zk: localhost:2181(CONNECTED) 8] getAcl /test_shao/test_node_xx
'world,'anyone
: cdrwa
[zk: localhost:2181(CONNECTED) 9] setAcl /test_shao/test_node_xx ip:127.0.0.1:cdrwa
[zk: localhost:2181(CONNECTED) 10] getAcl /test_shao/test_node_xx
'ip,'127.0.0.1
: cdrwa
##设置了ip权限后,原来默认的 world 权限没有了
2)指定ip地址段
setAcl /test_shao/test_node_xx ip:192.168.1.0/16:cdrwa
6.4 设置 auth 权限模式
7.查询节点内容及状态信息
1)查询节点内容
get /test_shao/test_node_xx
修改后的内容
2)查询节点状态信息
stat /test_shao/test_node_xx
2)查询节点内容及状态信息
get -s /test_shao/test_node_xx
修改后的内容
cZxid = 0x6 ##创建节点的事务 zxid
ctime = Tue Jul 26 09:49:14 CST 2022 ##znode 被创建的毫秒数(从 1970 年开始)
mZxid = 0x9 ##znode 最后更新的事务 zxid
mtime = Tue Jul 26 09:57:36 CST 2022 ##znode 最后修改的毫秒数(从 1970 年开始)
pZxid = 0x6 ##znode 最后更新的子节点 zxid
cversion = 0 ##znode 子节点变化号(增删子节点会递增),znode 子节点修改次数
dataVersion = 1 ##znode 数据变化号
aclVersion = 0 ##znode 访问控制列表的变化号
ephemeralOwner = 0x0 ##如果是临时节点,这个是 znode 拥有者的 session id。如果不是临时节点则是 0
dataLength = 18 ##znode 的数据长度
numChildren = 0 ##znode 子节点数量
以上是关于zookeeper 常用操作的主要内容,如果未能解决你的问题,请参考以下文章
Zookeeper -- Zookeeper JavaAPI相关操作(Curator介绍Curator API 常用操作(节点的CRUD,Watch事件监听)分布式锁模拟12306售票案例)