当前位置: 首页 > news >正文

zookeeper节点类型

节点类型

持久节点(Persistent Nodes)

这些是Zookeeper中最常见的一种节点类型,当创建一个持久类型节点时,该值会一直存在zookeeper中,直到被显式删除或被新值覆盖。

临时节点(Ephemeral Nodes)

这些节点只在创建它们的会话有效期内存在。如果会话过期或断开连接,节点会自动删除。临时节点通常用于表示分布式系统中的客户端或工作节点,例如队列或锁。

持久顺序节点(PERSISTENT_SEQUENTIAL Nodes)

顺序节点与持久节点类似,但其名称后面附加了一个序号,使得节点名称唯一。当创建顺序节点时,Zookeeper会给其名称添加一个单调递增的计数器

临时顺序节点(EPHEMERAL_SEQUENTIAL Nodes)

同持久顺序节点特性,只不过会话内有效。会话关闭会自动消失。

3.6之后的版本还增加了ttl节点和Container节点。

创建不同类型节点

使用cli.sh

create命令默认创建的时持久节点

#创建持久顺序节点
create -s /persistent_seq_node
#创建临时节点
create -e /ephemeral_node
#创建临时顺序节点
create -s -e /ephemeral_seq_node

顺序节点自动会加后缀

[zk: localhost:2181(CONNECTED) 14] create -s /persistent_seq_node
Created /persistent_seq_node0000000001
[zk: localhost:2181(CONNECTED) 15] create -s /persistent_seq_node
Created /persistent_seq_node0000000002

临时顺序节点也会自动加后置

[zk: localhost:2181(CONNECTED) 24] create -s -e /ephemeral_seq_node
Created /ephemeral_seq_node0000000004
[zk: localhost:2181(CONNECTED) 25] create -s -e /ephemeral_seq_node
Created /ephemeral_seq_node0000000005

临时节点会话关闭后会自动消失。这个端口zkCli.sh从写开启一个连接测试下即可。

使用java创建不同类型节点

zookeeper的api将抽象出一个CreateMode枚举对象来表示不同的节点类型。

使用原生api。最后一个参数指定类型

zooKeeper.create(path,"123".getBytes(),ZooDefs.Ids.OPEN_ACL_UNSAFE,CreateMode.PERSISTENT)

zkclient使用不同的create重载方法来创建

在这里插入图片描述

Curator在创建时候使用withMode来指定节点类型

client.create().withMode(CreateMode.PERSISTENT_SEQUENTIAL).forPath("/sequential_node_", data);

顺序节点的获取

一般顺序节点都会有一层父节点,然后通过调用父节点的所有子节点来获取所有的顺序节点。

如使用curator获取

List<String> strings = client.getChildren().forPath("/test");
节点状态信息

节点的状态信息被封装在Stat对象中。Stat有以下属性

public class Stat implements Record {//节点的创建事务的zxid(ZooKeeper Transaction Id),即创建时事务的IDprivate long czxid;//节点最后一次修改事务的zxid,即最后一次更新或者删除发生时的事务IDprivate long mzxid;//创建时间private long ctime;//上次修改时间private long mtime;//版本号,数据被修改次数private int version;//节点子节点的版本号,即子节点被修改的次数private int cversion;//节点ACL(访问控制列表)的版本号,即ACL被修改的次数private int aversion;//如果当前节点是临时节点,则ephemeralOwner表示当前节点的拥有者会话ID;否则,值为0private long ephemeralOwner;//数据长度private int dataLength;//子节点数private int numChildren;//子节点上次修改事务IDprivate long pzxid;}

可以通过exists方法来获取stat对象

Stat stat = zooKeeper.exists(path, false);
http://www.lryc.cn/news/219422.html

相关文章:

  • 【C++】一篇文章搞懂auto关键字及其相关用法!
  • 微信小程序overflow-x超出部分样式不渲染
  • Oracle常用运维SQL-SQL执行性能及锁表等查询分析
  • 安装MySQL时出现 由于找不到 MSVCR120.dll,无法继续执行代码。重新安装程序可能会解决此问题。
  • 【基础IO⑧】:文件描述符fd(进程与文件的联系)
  • 搭建WAMP网站教程(windows+apache+mysql+php)
  • 瓦斯抽采VR应急救援模拟仿真系统筑牢企业安全生产防线
  • nodelist 与 HTMLCollection 的区别
  • 系列十二、过滤器 vs 拦截器
  • dockerfile运行apk命令卡住的问题解决——更换镜像
  • Android - 编译 openssl 踩坑之路
  • verdi技巧分享--合并多个fsdb文件、统计信号边沿
  • czmq的4版本中CURVE怎么实现的两个程序之间使用的一个证书?
  • Spring Boot整合Swagger
  • SpringBoot-WebSocket浏览器-服务器双向通信
  • Docker网络模式_Docker常用命令_以及Docker如何给运行的镜像内容连接互联网_Docker网络模式原理---Docker工作笔记004
  • 爬虫项目-爬取股吧(东方财富)评论
  • 【Midjourney入门教程2】Midjourney的基础操作和设置
  • 后端使用DES加密,前端解密方法
  • chrome 扩展 popup 弹窗的使用
  • Spring Security入门教程,springboot整合Spring Security
  • 如何在 Unbuntu 下安装配置 Apache Zookeeper
  • AI视觉领域流媒体知识入门介绍(二):深入理解GOP
  • C++ 代码实例:并查集简单创建工具
  • Hadoop学习总结(Shell操作)
  • LeetCode热题100——链表
  • 使用C++的QT框架实现贪吃蛇
  • 如何发布自己的golang库
  • 梳理自动驾驶中的各类坐标系
  • 一个可以自动把微信聊天收到的二维码图片实时提取出来并分类的软件