zookeeper之基本命令

1、创建节点:

    create [-s] [-e] [-c] [-t ttl] path [data] [acl]

  • -s: 创建一个顺序节点。顺序节点会在其路径名后加上一个递增的数字,这个数字反映了节点被创建的顺序。
  • -e: 创建一个临时节点。临时节点在客户端会话结束时会自动被删除。
  • -c: 创建一个容器节点。容器节点可以包含其他子节点。
  • -t ttl: 设置节点的生存时间(以毫秒为单位)。如果设置了这个选项,节点将在指定的时间后自动过期并被删除。

容器节点是Zookeeper 3.5版本以后新增的节点类型,与普通节点(持久节点)的主要区别在于其自动清理的特性和专门的使用场景。具体如下:

  • 自动清理特性:当容器节点没有子节点时,Zookeeper服务端会启动一个单独的线程来扫描,并且会自动删除该容器节点。这一点与持久节点不同,持久节点即使在没有子节点的情况下也会一直存在。
  • 专门使用场景:官方注释指出,容器节点适用于特定的用途,如领导者选举(leader)或分布式锁等场景。这是因为容器节点能够根据子节点的存在与否自动管理自己的生命周期,这对于实现某些协调功能非常有用。

2、删除节点

      delete [-v version] path
      deleteall path [-b batch size]

Zookeeper的delete命令用于删除指定的节点。具体来说,delete命令有两种形式,一种是单独使用delete,另一种是结合deleteall命令一起使用。

delete命令格式

  • delete [-v version] path:删除指定路径下的节点。如果指定了-v version选项,那么只有当节点的版本号与指定的版本号匹配时,节点才会被删除。这个参数可以用于实现乐观锁机制,避免误删数据。
  • deleteall path:递归删除该节点及其所有子节点。这个命令会删除指定路径下的所有数据,包括子节点。

注意事项

  • 使用delete命令删除节点时,被删除的节点必须没有任何子节点,否则会删除失败。这是因为Zookeeper不允许删除有子节点的非容器节点。
  • 如果需要删除一个包含子节点的节点,可以使用rmrdeleteall命令来递归删除该节点及其所有子节点。

3、子结点查询

    ls [-s] [-w] [-R] path

  • -R:递归列出指定节点下的所有子节点,这对于查看整个子树的结构非常有用
  • -s: 列出子结点和节点状态

4、查询节点数据

   get [-s] [-w] path

  • -s:列出节点值和节点状态信息
  • -w:在获取数据后注册一个watcher,当节点数据发生变化时,会通知客户端。

5、设置节点数据

     set [-s] [-v version] path data

  • -s:这个选项用于设置或更新顺序节点的数据。如果使用这个选项,Zookeeper会在节点路径后附加一个递增的数字,这个数字反映了节点被创建的顺序。
  • -v version:这个选项允许你指定节点的版本号。只有当节点的当前版本号与指定的版本号匹配时,数据才会被更新。这个选项在乐观锁机制中非常有用,可以防止数据冲突。

 6、节点属性说明

状态属性 节点说明
cZxid 数据节点创建时的事务ID
ctime 数据节点创建世的时间
mZxid 数据节点最后一个更新是的事务ID
mtime 数据节点最后一个跟新时的时间
pZxid 数据节点的子节点最后一个被修改时的事务ID
cversion 子节点的更改次数
dataVerion 节点数据的更改次数
aclVersion 节点ACL的更改次数
ephemeralOwner 如果节点是临时节点,则表示创建该节点的会话的SeeesionID;如果是持久节点,则该属性值为0
dataLength 数据内容的长度
numChildren 数据节点当前的子节点个数

相关推荐

  1. zookeeper基本命令

    2024-04-05 15:42:04       41 阅读
  2. docker 基本命令

    2024-04-05 15:42:04       33 阅读
  3. zookeeper命令详解1

    2024-04-05 15:42:04       39 阅读
  4. zookeeper相关命令

    2024-04-05 15:42:04       31 阅读
  5. 大数据培训Zookeeper基础-1

    2024-04-05 15:42:04       34 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-05 15:42:04       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-05 15:42:04       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-05 15:42:04       87 阅读
  4. Python语言-面向对象

    2024-04-05 15:42:04       96 阅读

热门阅读

  1. 蒟蒻求助帖

    2024-04-05 15:42:04       33 阅读
  2. 微信小程序 ---- 慕尚花坊 订单列表

    2024-04-05 15:42:04       39 阅读
  3. Android 关机充电动画卡住无反应,也不灭屏

    2024-04-05 15:42:04       39 阅读
  4. 【递推与递归】python例题详解

    2024-04-05 15:42:04       35 阅读
  5. @RequestBody与@RequestParam的区别

    2024-04-05 15:42:04       42 阅读
  6. EasyPOI导出动态表头

    2024-04-05 15:42:04       37 阅读
  7. Springboot集成hanlp快速入门demo

    2024-04-05 15:42:04       43 阅读
  8. 题目 1752: 对称矩阵

    2024-04-05 15:42:04       35 阅读
  9. Spring Boot集成Spring Retry快速入门Demo

    2024-04-05 15:42:04       37 阅读
  10. 深入理解nginx mp4流媒体模块[下下]

    2024-04-05 15:42:04       39 阅读
  11. Day.21

    2024-04-05 15:42:04       40 阅读