连接和断开节点
- 查看ZooKeeper的状态和角色:ZooKeeper安装目录/bin/zkServer.sh status
- 通过ZooKeeper客户端:ZooKeeper安装目录/bin/zkCli.sh -server ip地址:port
- 客户端连接成功后,输出ZooKeeper支持的所有命令:help
- 客户端连接成功后,断开连接:quit
节点控制
- 查看指定路径下包含的节点:
# 查看/目录下包含的节点
ls /
# 查看 /test/node1目录下包含的节点
ls /test/node1
- 创建节点
创建节点时,可以不带数据,此时获取该节点的数据,返回null
临时节点:会话结束,节点删除
-s:有序节点 -e:临时节点
# 创建永久无序节点
create /test "数据"
# 创建永久有序节点
create -s /test "数据"
# 创建临时无序节点
create -e /test "数据"
# 创建临时有序节点
create -e -s /test "数据"
create -es /test "数据"
- 读取节点数据
get 节点路径
get /test
- 获取节点详细信息
get -s 节点路径
get -s /test
- 查看当前节点的属性
stat 节点路径
- 查看当前节点的子节点列表
ls 节点路径
返回结果:
test #返回结果
cZxid = 0x200000013
ctime = Fri Aug 14 05:59:08 UTC 2020
mZxid = 0x200000017
mtime = Fri Aug 14 06:24:43 UTC 2020
pZxid = 0x200000013
cversion = 0
dataVersion = 2 #节点数据版本号
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 4
numChildren = 0
- 修改节点数据
set 节点路径 新数据
【方式2】带乐观锁的方式修改节点数据:
set -v 版本号 节点路径 数据
set -v 1 /test/a0000000006 12
基于版本号进行修改,当set命令传入的版本号与当前节点的版本号不一致时,zookeeper会拒绝修改。
- 删除节点
#删除节点
delete 节点路径
#递归删除,可以删除某个节点及其子节点
deleteall 节点路径
带版本删除节点
delete -v 版本号 节点路径
delete -v 12 /test/a0000000006
监听器
(1) 使用【get -w 节点路径】注册的监听器能够在节点数据发生变化,向客户端发出通知,当触发一次监听事件后,该监听就会立即失效
get -w 节点路径
(2)使用【stat -w 节点路径】注册的监听器能够在节点数据发生变化,向客户端发出通知,当触发一次监听事件后,该监听就会立即失效
stat -w 节点路径
(3)使用【ls -w 节点路径】注册的监听器能监听该节点下的所有子节点的增加和删除操作,当触发一次监听事件后,该监听就会立即失效
ls -w /test
切记:一次监听器的注册只能捕获一次事件,使用一次后立即失效
ACL 访问权限控制列表
acl: access control list
Zookeeper的权限控制是针对每个znode节点的,需要对每个节点设置权限,子节点不会继承父节点的权限,客户端无权访问某节点,但可能访问它的子节点
zookeeper的权限模式:world、IP、auth、digest
- world模式:只有一个用户,anyone,代表登录zookeeper的所有人(默认)
- ip模式:对客户端进行ip地址认证
setAcl 节点路径 权限模式:授权对象:权限
#ip地址为192.168.1.2的客户端可以对节点拥有增删改查的权限
setAcl /test ip:192.168.1.2:crwda
- auth模式:使用已添加认证的用户认证
- digest:使用用户名:密码的方式认证