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不允许删除有子节点的非容器节点。 - 如果需要删除一个包含子节点的节点,可以使用
rmr
或deleteall
命令来递归删除该节点及其所有子节点。
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数据节点创建时的事务IDctime数据节点创建世的时间mZxid数据节点最后一个更新是的事务IDmtime数据节点最后一个跟新时的时间pZxid数据节点的子节点最后一个被修改时的事务IDcversion子节点的更改次数dataVerion节点数据的更改次数aclVersion节点ACL的更改次数ephemeralOwner如果节点是临时节点,则表示创建该节点的会话的SeeesionID;如果是持久节点,则该属性值为0dataLength数据内容的长度numChildren数据节点当前的子节点个数
版权归原作者 逻辑漩涡 所有, 如有侵权,请联系我们删除。