zookeeper学习(三)基础数据结构

这篇具有很好参考价值的文章主要介绍了zookeeper学习(三)基础数据结构。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

数据模型

在 zookeeper 中,可以说 zookeeper 中的所有存储的数据是由 znode 组成的,节点也称为 znode,并以 key/value 形式存储数据。

整体结构类似于 linux 文件系统的模式以树形结构存储。其中根路径以 / 开头。

进入 zookeeper 安装的 bin 目录,通过sh zkCli.sh打开命令行终端

./zkCli.sh -server localhost:2181

执行 “ls /” 命令显示:

ls /

zookeeper学习(三)基础数据结构,zookeeper,学习,linux

在默认情况下 根目录 / 下只有zookeeper一个节点,我们也可以手动的加节点

zookeeper学习(三)基础数据结构,zookeeper,学习,linux
可以通过get命令来查看节点的值

get /test

zookeeper学习(三)基础数据结构,zookeeper,学习,linux

其中第一行显示的 abc 是该节点的 value 值。

Znode的组成部分

Znode 的data(数据)

get /test

zookeeper学习(三)基础数据结构,zookeeper,学习,linux

Znode的acl(权限)

getAcl /路径
getAcl /test

zookeeper学习(三)基础数据结构,zookeeper,学习,linux

Znode的stat(元数据)

stat /节点路径
stat /test

zookeeper学习(三)基础数据结构,zookeeper,学习,linux

  • cZxid 创建节点时的事务ID
  • ctime 创建节点时的时间
  • mZxid 最后修改节点时的事务ID
  • mtime 最后修改节点时的时间
  • pZxid 表示该节点的子节点列表最后一次修改的事务ID,添加子节点或删除子节点就会影响子节点列表,但是修改子节点的数据内容则不影响该ID(注意,只有子节点列表变更了才会变更pzxid,子节点内容变更不会影响pzxid)
  • cversion 子节点版本号,子节点每次修改版本号加1
  • dataversion 数据版本号,数据每次修改该版本号加1
  • aclversion 权限版本号,权限每次修改该版本号加1
  • ephemeralOwner 创建该临时节点的会话的sessionID。(如果该节点是持久节点,那么这个属性值为0)
  • dataLength 该节点的数据长度
  • numChildren 该节点拥有子节点的数量(只统计直接子节点的数量)
    了解上面状态属性值,我们对 /test 节点做一次修改,执行命令 set /test ccc ,如下图所示:
$ set /test ccc

对比上面结果,可以看到 mZxid、mtime、dataVersion 都发生了变化。
zookeeper学习(三)基础数据结构,zookeeper,学习,linux

Zonde的child(子节点)

ls /节点路径
ls /test     获取test节点的子节点

zookeeper学习(三)基础数据结构,zookeeper,学习,linux

Znode节点类型

在3.6.2版本中

  • PERSISTENT:持久化节点,在会话结束后依然存在,不会随客户端的断开而自动删除,默认类型

  • PERSISTENT_SEQUENTIAL:持久序号节点,创建出的节点,根据创建先后顺序,会在节点后带一个数值,znode的名字将被附加一个单调递增的数字,越往后数值越大,适用于分布式锁的应用场景

  • EPHEMERAL:临时节点,当客户端断开时自动删除,通过这个特性,zk可以实现服务注册与发现的效果

  • EPHEMERAL_SEQUENTIAL:带序号的临时节点,znode的名字将被附加一个单调递增的数字
    zookeeper学习(三)基础数据结构,zookeeper,学习,linux

  • CONTAINER(3.5.3版本新增):Container容器节点,当容器中没有任何子节点,该容器节点会被zk定期删除(60s)

  • PERSISTENT_WITH_TTL:zookeeper的扩展类型,如果znode在给定的TTL内没有被修改,它将在没有子节点时被删除。要想使用该类型,必须在zookeeper的bin/zkService.sh中的启动zookeeper的java环境中设置环境变量zookeeper.extendedTypesEnabled=true(具体做法在下边),否则KeeperErrorCode = Unimplemented for /**。

  • PERSISTENT_SEQUENTIAL_WITH_TTL:同上,是不过是带序号的文章来源地址https://www.toymoban.com/news/detail-625695.html

到了这里,关于zookeeper学习(三)基础数据结构的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 第一百零五天学习记录:数据结构与算法基础:顺序表(王卓教学视频)

    注:笔记截图均来自王卓数据结构教学视频 线性表是具有相同特性的数据元素的一个有限序列 同一线性表中的元素必定具有相同特性,数据元素间的关系是线性关系。 稀疏多项式的运算 顺序存储结构存在的问题 1、存储空间分配不灵活 2、运算的空间复杂度高 引出链式存储

    2024年02月15日
    浏览(29)
  • 第一百零六天学习记录:数据结构与算法基础:单链表(王卓教学视频)

    结点在存储器中的位置是任意的,即逻辑上相邻的数据元素在物理上不一定相邻 线性表的链式表示又称为非顺序映像或链式映像。 用一组物理位置任意的存储单元来存放线性表的数据元素。 这组存储单元既可以是连续的,也可以是不连续的,甚至是零散分布在内存中的任意

    2024年02月16日
    浏览(41)
  • Linux中的命令行学习数据结构就下面几个大全【理论篇】

    PhysicsRaycaster是Unity UGUI中的一个组件,用于在UI元素上进行物理射线检测。它可以检测鼠标或触摸事件是否发生在UI元素上,并将事件传递给相应的UI元素。 PhysicsRaycaster通过发射一条射线来检测UI元素。当射线与UI元素相交时,PhysicsRaycaster会将事件传递给相应的UI元素。 Event

    2024年02月22日
    浏览(31)
  • Java 学习路线:基础知识、数据类型、条件语句、函数、循环、异常处理、数据结构、面向对象编程、包、文件和 API

    Java 是一种由 Sun Microsystems 于 1995 年首次发布的编程语言和计算平台。Java 是一种通用的、基于类的、面向对象的编程语言,旨在减少实现依赖性。它是一个应用程序开发的计算平台。Java 快速、安全、可靠,因此在笔记本电脑、数据中心、游戏机、科学超级计算机、手机等领

    2024年03月24日
    浏览(75)
  • 数据结构与算法基础-学习-24-图的遍历之DFS(深度优先搜索)和BFS(广度优先搜索)

    目录 一、遍历定义 二、遍历实质 三、DFS 四、BFS 五、宏定义 六、自定义类型 七、函数实现 1、DFS(邻接矩阵实现) 2、DFS(邻接表实现) 3、BFS(邻接矩阵实现) 4、BFS(邻接表实现) 5、打印邻接矩阵遍历顺序  6、打印邻接表遍历顺序 八、遍历算法效率分析 1、DFS 2、BFS 九

    2024年02月03日
    浏览(59)
  • 第一百二十八天学习记录:数据结构与算法基础:栈和队列(上)(王卓教学视频)

    1、栈和队列是两种常用的、重要的数据结构 2、栈和队列是限定插入和删除只能在表的“端点”进行的线性表 线性表可以在任意一个位置插入和删除,栈只能在最后位置插入和删除 只能删除第一个元素 栈和队列是线性表的子集(是插入和删除位置受限的线性表)

    2024年02月13日
    浏览(35)
  • 数据结构--》从数据结构开始,打好算法基础

    目录 数据结构的基本概念 数据结构的三要素 算法的基本概念 数据结构的基本概念         在学习某个知识之前,我们是否都有问过自己我们到底在学习的目的是什么?学习数据结构也一样,我们学习数据结构 主要是为了 用程序把现实世界的问题信息化;用计算机高效

    2024年02月09日
    浏览(35)
  • 基础+常用的数据结构

    JDK,它是功能齐全的 Java SDK,是提供给开发者使用,能够创建和编译 Java 程序的开发套件。它包含了 JRE,同时还包含了编译 java 源码的编译器 javac 以及一些其他工具比如 javadoc(文档注释工具)、jdb(调试器)、jconsole(基于 JMX 的可视化监控⼯具)、javap(反编译工具)等等

    2024年01月22日
    浏览(33)
  • Java基础--数据结构

    Java工具包提供了强大的数据结构。在Java中的数据结构主要包括以下几种接口和类: 枚举(Enumeration)、位集合(BitSet)、向量(Vector)、栈(Stack)、字典(Dictionary)、哈希表(Hashtable)、属性(Properties) 以上这些类是传统遗留的,在Java2中引入了一种新的框架-集合框架

    2023年04月14日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包