Zookeeper02——数据结构与命令行操作

1.Zookeeper的数据结构
  • Zookeeper的数据结构和文件的目录结构类似,主要区别是文件的目录结构中,目录和文件是区分开的,但是Zookeeper的数据树节点既是路径,也存储文件。
  • Zookeeper的数据结构如下图所示:Zookeeper02——数据结构与命令行操作
    • 所有的node都从根节点 / 创建,zookeeper的节点称为znode。
    • 每个znode的组成结构包含:
      • path:节点的全路径(没有相对路径的说法)
      • stat:节点的状态信息(重点)。
      • data:节点下存储的数据(不一定有值)。
    • 从上图可以看出,znode可同时存储数据也可以有子节点。
    • 下图是通过Zookeeper的客户端对znode节点进行get后的输出信息(除第一行是data数据,其他就是znode的stat信息):Zookeeper02——数据结构与命令行操作
      • 第一行:9527是节点存储的数据。
      • cZxid:znode创建时的事务id(16进制)。
      • ctime:znode创建的时间。
      • mZxid:znode最后一次修改的事务id。
      • mtime:最后一次修改的时间。
      • pZxid:数据节点的子节点列表,最后一次被修改的事务id
        • 即在一个znode下创建一个子znode,可以看到子znode的cZxid,mZxid,pZxid都等于这个值,其中cZxid不会改变,另外mZxid,pZxid进行相应的操作会发生变更。
      • cversion:子节点的版本号。
      • dataVersion:数据节点的版本号,变更一次加1。
      • aclVersion:数据的ACL(权限控制列表)版本号,变更一次加1。
      • ephemeralOwner:如果是临时节点,则表示该节点创建的会话id,否则为0x0(ephemeralOwner = 0x169843156830000)。
      • dataLength:数据长度(中文1个字表示3个字节长度)。
      • numChildren:子节点的数据长度。
    2.Zookeeper的命令行操作
    • 在通过zookeeper提供的客户端登录脚本{zookeeper_home}\bin\ zkCli.sh连接到zookeeper服务后,输入 help可以看到zookeeper支持的命令。
    • zookeeper命令行操作,支持的命令如图:Zookeeper02——数据结构与命令行操作
    • Zookeeper的命令行操作可以和其提供的API库一一对应起来,先学习其命令行工具,再转回查看其客户端库的API会十分方便理解。
  • Zookeeper的客户端端命令:
    • 连接zookeeper服务:
      • ./zkCli.sh -server ip:port
      • 连接成功后,连接其他zookeeper服务:connect host:port
    • 创建命令:
      • znode节点分为临时有序两种组合类型,即存在临时节点,临时有序节点,持久节点,持久有序节点。
      • 临时节点:create -e /test "" -e表示临时节点,只在当次会话存在,会话消失则删除。
      • 临时有序节点:create -e -s /test "" -s表示节点有序,有序是指对创建节点的名称后拼接一个有序自增数。如示例命令创建节点名称为/test0000000111
      • 创建节点时,去除-e参数,则分别表示持久节点和持久有序节点。
    • 修改命令:
      • set path data [version]:针对指定的路径进行重新赋值,上图中有一个可选参数 version,为前面介绍的znode的stat信息中dataVersion的值,操作时指定这个值,则必须在操作znode的dataVersion值等于指定值时,修改指令才能生效。
    • 删除命令
      • delete path [version]:其中version作用和修改命令中的一致,delete只能删除没有子节点的znode。
      • rmr path:删除指定节点,及其子节点。
    • 查看命令:
      • get path [watch]:查看znode的data和stat信息。其中可选参数watch,表示是否在此节点设置监视点,true或false。在进行修改命令操作时会触发监听器,监听器只能被触发一次,如果需要再次监听,需要重新设置监听。
      • ls path [watch]:查看znode下的子znode。也可以设置监听器,对子节点的创建删除进行监听。
      • stat path [watch]:查看前面介绍的znode的stat信息,设置的监听器,监听该节点的数据变化。
      • ls2:为get和stat的结合。
    • 权限命令
      • 见下一篇博客
    • 配额命令
      • 后续博客更新。

PS:欢迎各位留言交流~~