开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 10 天,点击查看活动详情
zookeeper常用命令
对zookeeper存储的数据节点,我们可以通过代码实现,当然也可以采用命令方式操作节点!
常用的zookeeper节点命令:
help查看提供的命令列表:
zk提供了很多命令给我们,接下来我们来学习一下zk的常用命令。
create
语法:create [-s] [-e] path [data]
创建节点:
前面的课程我们讲到zk的基本单元是基于类似文件系统的path唯一路径存放的数据结构节点:znode。
znode分为四种类型:持久节点、持久序号节点、临时节点、临时序号节点。
持久节点:
持久化保存的节点,zk默认创建的节点类型就是持久节点,如:
#默认创建的就是持久节点,创建的节点名称以path路径形式创建
create /hello
ls /查看创建的节点
注意:创建节点和linux创建文件夹目录相似,如果创建一个上级路径不存在的节点会报错误:
持久序号节点:
持久化保存的节点,同时创建的节点会以一串序号作为后缀,创建时添加-s参数:
create -s /hello-world
命令可以连续多敲几次,然后你 ls / 列出节点查看效果:
临时节点:
不持久化保存,只存在于当前客户端保持连接期间。当客户端断开连接后会自动删除,创建时添加-e参数:
create -e /hello-world-e
打开两个终端:
1.创建临时节点
创建完成后,另外的客户端也可以查看到节点。
2.使用close命令关闭创建临时节点的会话
此时观察发现另外的客户端都不能查询之前创建的临时节点/hello-world-e了.
关闭会话的客户端输入connect重新连接,后续做监控测试有用。
临时序号节点:
不持久化保存,只存在于当前客户端会话期间,同时创建的节点会以一串序号作为后缀,创建时添加-e -s参数:
create -e -s /hello-world-e-s
注意:临时节点不能创建子节点
节点类型小结:
- zookeeper的znode节点默认创建的是持久节点。
- 临时节点的特征是只要创建该临时节点的客户端连接关闭了或者session超时连接,那么服务端会自动将该客户端所创建的所有临时节点全部删除。
- zookeeper还支持序号节点,创建节点的时候会根据节点的path作为前缀,序号进行递增。
ls
语法: ls [-w] [-R] path
与linux的ls差不多,列出子节点。-s 同时显示节点对应的状态,-w 监控某个节点,-R 递归列出所有子节点
基本查询
path:节点路径
递归查询
节点监控 -w watch
只能监控子节点的创建、删除 一次性
ls -w /hello,监控/hello节点,当改节点路径下新创建了一个子节点后会立马感知到。
下面看一下连续创建子节点效果:
发现没有继续监控,监控的数据还是之前第一次的那一条。
注意:很多一线互联网公司喜欢问你zk的监控生效次数,这时候你应该回答监控只会有一次生效.
新版本的3.6之后addWatch命令优化了这块的监控,也就是监控实现了自递归监听。
addWatch(了解命令)
监控节点
基本语法:addWatch [-m mode] path
set
create命令创建了znode节点,此时还没给节点赋值。你也可以理解为文件夹创建好了,里面内容还是空的,通过set命令可以赋值操作:
基本语法:set [-s] [-v version] path data
-s设置完值后同时查看节点状态
-v设置值的同时带上版本号
set /hello 123
get
查看节点数据
基础语法:get [-s] [-w] path
-w 监控当前节点的数据变化
-s 同时查看节点状态
开启节点数据监控:
get -w /hello
delete
删除节点:只能删除没有子节点的节点
基础语法:delete [-v version] path
deleteall
递归删除,会将当前节点以及所有子节点都删除
基本语法:deleteall path
stat(看完扩展再看)
查看节点属性
基本语法:stat [-w] path
stat /helloacl
属性说明:
cZxid = 0x24 #创建节点的事物ID
ctime = Mon Aug 10 16:45:17 CST 2020 #创建时间
mZxid = 0x26 #修改节点的事物ID
mtime = Mon Aug 10 16:46:39 CST 2020 #修改时间
pZxid = 0x24 #子节点变更的事物ID
cversion = 0 #这表示对此znode的子节点进行的更改次数(不包括子节点)
dataVersion = 1 # 数据版本,变更次数
aclVersion = 1 #权限版本,变更次数
ephemeralOwner = 0x0 #临时节点所属会话ID
dataLength = 3 #数据长度
numChildren = 0 #子节点数(不包括子子节点)
close
关闭当前客户端会话
基本语法:close
输入命令后会一直卡着,可以敲一下回车键回到客户端命令模式。
connect
连接命令,如close完了以后想重新建立连接可以输入此命令
基本语法:connect
记得敲回车键回到命令模式。
quit
退出当前客户端
基本语法:quit