zookeeper常用命令

111 阅读5分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 10 天,点击查看活动详情

zookeeper常用命令

对zookeeper存储的数据节点,我们可以通过代码实现,当然也可以采用命令方式操作节点!

常用的zookeeper节点命令:

help查看提供的命令列表:

24.png

zk提供了很多命令给我们,接下来我们来学习一下zk的常用命令

create

语法:create [-s] [-e] path [data]

创建节点:

前面的课程我们讲到zk的基本单元是基于类似文件系统的path唯一路径存放的数据结构节点:znode。

znode分为四种类型:持久节点、持久序号节点、临时节点、临时序号节点。

持久节点

持久化保存的节点,zk默认创建的节点类型就是持久节点,如:

#默认创建的就是持久节点,创建的节点名称以path路径形式创建
create /hello

25.png

ls /查看创建的节点

26.png

注意:创建节点和linux创建文件夹目录相似,如果创建一个上级路径不存在的节点会报错误

27.png

持久序号节点

持久化保存的节点,同时创建的节点会以一串序号作为后缀,创建时添加-s参数:

create -s /hello-world

命令可以连续多敲几次,然后你 ls / 列出节点查看效果:

28.png

临时节点:

不持久化保存,只存在于当前客户端保持连接期间。当客户端断开连接后会自动删除,创建时添加-e参数:

create -e /hello-world-e

打开两个终端:

1.创建临时节点

29.png

30.png

创建完成后,另外的客户端也可以查看到节点。

2.使用close命令关闭创建临时节点的会话

31.png

32.png

此时观察发现另外的客户端都不能查询之前创建的临时节点/hello-world-e了.

关闭会话的客户端输入connect重新连接,后续做监控测试有用。

临时序号节点:

不持久化保存,只存在于当前客户端会话期间,同时创建的节点会以一串序号作为后缀,创建时添加-e -s参数:

create -e -s /hello-world-e-s

33.png

注意:临时节点不能创建子节点

节点类型小结:

  • zookeeper的znode节点默认创建的是持久节点。
  • 临时节点的特征是只要创建该临时节点的客户端连接关闭了或者session超时连接,那么服务端会自动将该客户端所创建的所有临时节点全部删除。
  • zookeeper还支持序号节点,创建节点的时候会根据节点的path作为前缀,序号进行递增。

ls

语法: ls [-w] [-R] path

与linux的ls差不多,列出子节点。-s 同时显示节点对应的状态,-w 监控某个节点,-R 递归列出所有子节点

基本查询

path:节点路径

34.png

递归查询

35.png

节点监控 -w watch

只能监控子节点的创建、删除 一次性

36.png

37.png

38.png ls -w /hello,监控/hello节点,当改节点路径下新创建了一个子节点后会立马感知到。

下面看一下连续创建子节点效果:

39.png

40.png

发现没有继续监控,监控的数据还是之前第一次的那一条。

注意:很多一线互联网公司喜欢问你zk的监控生效次数,这时候你应该回答监控只会有一次生效.

新版本的3.6之后addWatch命令优化了这块的监控,也就是监控实现了自递归监听。

addWatch(了解命令)

监控节点

基本语法:addWatch [-m mode] path

63.png 64.png

set

create命令创建了znode节点,此时还没给节点赋值。你也可以理解为文件夹创建好了,里面内容还是空的,通过set命令可以赋值操作:

基本语法:set [-s] [-v version] path data

-s设置完值后同时查看节点状态

-v设置值的同时带上版本号

set /hello 123

41.png

42.png

get

查看节点数据

基础语法:get [-s] [-w] path

-w 监控当前节点的数据变化

-s 同时查看节点状态

开启节点数据监控:

get -w /hello

43.png

44.png

45.png

delete

删除节点:只能删除没有子节点的节点

基础语法:delete [-v version] path

46.png

deleteall

递归删除,会将当前节点以及所有子节点都删除

基本语法:deleteall path

47.png

stat(看完扩展再看)

查看节点属性

基本语法:stat [-w] path

stat /helloacl

51.png

属性说明:

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

输入命令后会一直卡着,可以敲一下回车键回到客户端命令模式。

52.png

connect

连接命令,如close完了以后想重新建立连接可以输入此命令

基本语法:connect

53.png

记得敲回车键回到命令模式。

quit

退出当前客户端

基本语法:quit

54.png