Zookeeper节点操作及相关命令

Zookeeper安装与目录结构中,最后我们为了能够生成相关的日志文件及快照文件,我们进行了一些创建/修改节点的操作,这里我们就来详细介绍一些,首先我们需要启动ZK的服务端,这个之前已经介绍过了,然后我们就需要使用客户端去连接,如下:
在这里插入图片描述

执行后,我们就成功连接上了,这里我们就可以进行创建/修改/删除节点的操作 了,这里我们首先来介绍一下Zookeeper的节点模型及类型。

首先ZooKeeper的视图结构和标准的Unix文件系统类似,其中每个节点称为“数据节点”或ZNode,每个znode可以存储数据,还可以挂载子节点,因此可以称之为“树”,这个树形的结构,我们通过之前介绍的Zookeeper的图形化客户端工具 ZooInspector 是可以清楚明确的看出的。第二点需要注意的是,每一个znode都必须有值,如果没有值,节点是不能创建成功的

在Zookeeper中,znode是一个跟Unix文件系统路径相似的节点,可以往这个节点存储或获取数据,另外可以通过客户端可对znode进行增删改查的操作,还可以注册watcher监控znode的变化。




Znode有四种形式的目录节点(默认是persistent ),对于持久节点和临时节点,同一个znode下,节点的名称是唯一的。

  • 持久节点(persistent): create /node1 value1,客户端断开连接zk不会删除persistent类型节点
  • 临时节点(ephemeral): create -e /node2 value2,客户端断开连接zk会删除ephemeral类型节点


    另外上述的持久节点和临时节点,又可以和顺序节点搭配,分为持久顺序节点临时顺序节点,那么什么是顺序节点呢,如下:
  • 顺序节点(sequential): create -s /node3 value3 创建znode时设置顺序标识,znode名称后会附加一个值,顺序号是一个单调递增的计数器,由父节点维护

接下来我们就来依次创建上述所介绍的不同类型的节点,首先我们先来创建一个持久节点,如下:
在这里插入图片描述

创建完成后,我们可以通过该 get /node1 来查看刚刚创建的节点信息,如下:
在这里插入图片描述

其中还可以看见创建时,在节点中设置的值,另外还有很多其他的信息,其含义如下:

属性 数据结构 描述
cZxid long 节点被创建的Zxid值
ctime long 节点被创建的时间
mZxid long 节点被修改的zXid值
mtime long 节点最后一次被修改的时间
pZxid long 子节点最有一次被修改时的事务ID
cversion long 节点的所拥有子节点被修改的版本号
dataVersion long 节点被修改的版本号
aclVersion long 节点的ACL被修改的版本号
ephemeralOwner long 如果此节点为临时节点,那么它的值为这个节点拥有者的会话ID;否则,它的值为0
dataLength int 节点数据域的长度
numChildren int 节点拥有的子节点个数

我们可结果上表进行查看刚刚我们创建的持久节点的信息,然后我们可以通过 set /node1 /value11 来修改 node1 节点中的值,然后查看其节点信息,发起其中节点修改时间、节点被修改的版本号等会发生变化
在这里插入图片描述
在这里插入图片描述

如果我们我们想要在一个节点下创建一个子节点,也是非常的简单的,如下:
在这里插入图片描述


另外我们可以通过 ls 来查询所有的节点信息,如下:
在这里插入图片描述

还可以通过 ls2 来查看其详细信息,和 get 展示的信息类似
在这里插入图片描述

另外我们通过Zookeeper的图形化客户端工具 ZooInspector 可以很清晰的查看每个节点下的值
在这里插入图片描述


那么我们希望删除一个节点呢?可以通过 delete /node1
在这里插入图片描述

但是我们运行后发提示我们该节点不为空,所以如果一个节点下有子节点的话,delete 命令无法将其删除,我们可以先将子节点删除,然后再将该节点删除,或者通过 rmr /node1 直接删除。


当我们完成了操作后,可以通过 quit 命令退出客户端,如果问题可以通过 help 获取相关提示




上述我们是以持久节点为例,介绍了常用的操作命令,那么如果我们想要创建一个临时节点呢?也是非常的简单,只需要添加 -e 即可,另外我们可以看到临时节点的ephemeralOwner是不为0的
在这里插入图片描述

这个节点当我们使用 quit 命令退出后,再次重新连接,就会发现临时节点已被删除了


另外我们之前说过,无论是持久节点,还是临时节点,其节点名称是唯一的,如果我们创建一个相同名称的节点,肯定是无法创建的
在这里插入图片描述

但是我们创建顺序节点是可以的,因为创建顺序节点,znode名称后会附加一个值,顺序号是一个单调递增的计数器,由父节点维护
在这里插入图片描述




另外在Zookeeper中还有一些常见的四字命令,支持某些特定的四字命令字母与其的交互,用来获取 ZooKeeper 服务的当前状态及相关信息。可通过 telnet 或 nc 向 ZooKeeper 提交相应的命令,在使用时需要前提是安装好了nc。

  • echo stat|nc 127.0.0.1 2181
    来查看哪个节点被选择作为follower或者leader

  • echo ruok|nc 127.0.0.1 2181
    测试是否启动了该Server,若回复imok表示已经启动

  • echo dump| nc 127.0.0.1 2181
    列出未经处理的会话和临时节点

  • echo kill | nc 127.0.0.1 2181
    关掉server

  • echo conf | nc 127.0.0.1 2181
    输出相关服务配置的详细信息

  • echo cons | nc 127.0.0.1 2181
    列出所有连接到服务器的客户端的完全的连接 / 会话的详细信息

  • echo envi |nc 127.0.0.1 2181
    输出关于服务环境的详细信息(区别于 conf 命令)

  • echo reqs | nc 127.0.0.1 2181
    列出未经处理的请求

  • echo wchs | nc 127.0.0.1 2181
    列出服务器 watch 的详细信息

  • echo wchc | nc 127.0.0.1 2181
    通过 session 列出服务器 watch 的详细信息,它的输出是一个与 watch 相关的会话的列表

  • echo wchp | nc 127.0.0.1 2181
    通过路径列出服务器 watch 的详细信息。它输出一个与 session 相关的路径

在这里插入图片描述
在这里插入图片描述

发布了286 篇原创文章 · 获赞 12 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/newbie0107/article/details/104874614