【Hadoop】ZooKeeper数据模型Znode

news/2025/3/21 6:24:30/

  • ZooKeeper 数据模型Znode
  • ZooKeeper 中的时间
  • ZooKeeper 节点属性

ZooKeeper 数据模型Znode

前面提过,Zookeeper相当于文件系统+通知机制。既然是文件系统,那就涉及数据模型。

在这里插入图片描述

ZooKeeper 的数据模型在结构上和Unix标准文件系统非常相似,都是采用树形层次结构,ZooKeeper 树中的每个节点被称为 Znode

在这里插入图片描述

和文件系统的目录树一样,ZooKeeper 树中的每个节点可以拥有子节点。但和标准文件系统也有不同之处,体现在:

  • 引用方式:Znode 通过路径引用,如同 Linux 中的文件路径,但路径必须由斜杠字符来开头

  • Znode 结构:每个 Znode 由 3 部分组成:

    • stat:描述该 Znode 的版本, 权限等信息
    • data:与该 Znode 关联的数据
    • children:该 Znode 下的子节点
  • Znode 大小:ZooKeeper 虽然可以关联一些数据,但并没有被设计为常规的数据库或者大数据存储,相反,它被用来管理调度数据,比如分布式应用中的配置文件信息、状态信息、汇集位置等等。这些数据的共同特性就是它们都很小,通常以 KB 为单位。ZooKeeper 的服务器和客户端都被设计为严格检查并限制每个 Znode 的数据大小至多 1M, 但实际使用中要远小于此值

  • 数据访问:ZooKeeper 中的每个节点存储的数据要被原子性的操作,也就是说读操作将获取与节点相关的所有数据,写操作将替换掉节点的所有数据。另外,每一个节点都拥有自己的 ACL(访问控制列表),这个列表规定了用户的权限,即限定了特定用户对目标节点可以执行的操作

  • 节点类型:ZooKeeper 中的节点有两种,分别为临时节点和永久节点。节点的类型在创建时即被确定,并且不能改变。

    • 临时节点:该节点的生命周期依赖于创建它们的会话。一旦会话结束,临时节点将被自动删除,或者也可以手动删除
    • 永久节点:该节点的生命周期不依赖于会话,并且只有在客户端显式地执行了删除操作的时候,这些节点才能被删除
  • 监视器:客户端可以在节点上设置 watch, 称为监视器。当节点状态发生改变时(Znode 的增、删、改)将会触发 watch 所对应的操作。当 watch 被触发时,ZooKeeper 将会向客户端发送且仅发送一条通知,因为 watch 只能被触发一次,这样可以减少网络流量。这就对应前面说的,当有用户关注的主播上线的时候,就会给用户发送通知消息,这个动作就是由监视器来完成的


ZooKeeper 中的时间

  • Zxid:Zxid 是一个 64 位的数字,它的高 32 位是 epoch 用来标识 leader 关系是否改变,每次一个Leader 被选出来,它都会有一个新的 epoch, 低 32 位是个递增计数。

    使得 ZooKeeper 节点状态改变的每一个操作都将使节点接收到一个 Zxid 格式的时间戳,并且这个时间戳全局有序。也就是说,每个对节点的改变都将产生一个唯一的 Zxid, 如果 Zxid1的值小于 Zxid2 的值,那么 Zxid1 所对应的事件发生在 Zxid2 所对应的事件之前。

    实际上,ZooKeeper 的每个节点维护者三个 Zxid 值,为别为:cZxid、mZxid、pZxid。

    cZxid 是节点的创建时间所对应的 Zxid 格式时间戳。

    mZxid 是节点的修改时间所对应的 Zxid 格式时间戳

  • 版本号

    对节点的每一个操作都将致使这个节点的版本号增加。每个节点维护着三个版本号,它们分别为:

    version:节点数据版本号

    cversion:子节点版本

    aversion:节点所拥有的 ACL 版本号


ZooKeeper 节点属性

一个 ZooKeeper 节点自身拥有表示其状态的许多重要属性,如下图所示。

在这里插入图片描述


http://www.ppmy.cn/news/1281690.html

相关文章

C++书籍推荐(持续更新...)

目录 新手C Primer Plus 初级数据结构算法设计与分析 中级C Core GuidelinesEffective CMore Effective C 高级C并发编程实战C Templates 专家C新经典 设计模式 大师计算之魂 神级传说 新手 完全适合小白的书籍 C Primer Plus 《C Primer Plus》这本书是一本深入浅出的C/C编程指…

<script setup> 的作用

一、使用<script setup> 之后&#xff0c;就不需要手动写以下代码&#xff0c;只要写逻辑代码 未加setup&#xff0c;vite 工程要加上下面代码 *export default{ * setup(){ * //只要写逻辑代码 * return{***} * } * } 加了setup &#xff0c;export default 、…

助力打造清洁环境,基于YOLOv7开发构建公共场景下垃圾堆放垃圾桶溢出检测识别系统

公共社区环境生活垃圾基本上是我们每个人每天几乎都无法避免的一个问题&#xff0c;公共环境下垃圾投放点都会有固定的值班时间&#xff0c;但是考虑到实际扔垃圾的无规律性&#xff0c;往往会出现在无人值守的时段内垃圾堆放垃圾桶溢出等问题&#xff0c;有些容易扩散的垃圾比…

Python 时间处理与数据分析利器:深入剖析 Arrow 模块的优势

写在开头 时间在数据分析中扮演着至关重要的角色&#xff0c;而选择适当的时间处理模块对于提高代码效率和可读性至关重要。本文将深入介绍 Arrow 模块&#xff0c;探讨其相对于其他时间处理模块的优势&#xff0c;以及在数据分析中的实际应用。 1. Arrow 模块概览 Arrow 模…

鸿蒙的基本项目_tabbar,首页,购物车,我的

以上效果&#xff0c;由四个ets文件实现&#xff0c;分别是容器页面。首页&#xff0c;购物车&#xff0c;我的。 页面里的数据&#xff0c;我是用json-server进行模拟的数据。 一、容器页面 使用组件Tabs和Tabcontent结合。 import Home from "./Home"; import …

5.2 显示窗口的内容(二)

三,显示器几何形状管理 只有显示管理器被允许更改显示器的几何形状。窗口管理器也是显示管理器。 3.1 当显示器显示其自身内容时 当显示器显示其自身内容时,适用以下属性: 显示属性描述SCREEN_PROPERTY_PROTECTION_ENABLE表示显示目标窗口是否需要内容保护。只要显示器上…

CentOS系统环境搭建(二十六)——使用nginx在无域名情况下使用免费证书设置https

centos系统环境搭建专栏&#x1f517;点击跳转 文章目录 使用nginx在无域名情况下使用免费证书设置https1.获取SSL证书1.1 生成SSL密钥1.2 生成SSL证书1.3 重命名密钥文件 2.nginx配置https2.1 放证书2.2 修改nginx.conf文件2.2.1 将80端口重定向到4432.2.2 端口443配置ssl证书…

二维码智慧门牌管理系统:提升社区管理智能化水平

文章目录 前言一、全方位信息录入与查询二、公安权限账户访问的公安大数据后台三、社区工作人员申请权限安装录入软件四、业主通过移动终端扫描标准地址二维码门牌自主申报录入五、系统的价值 前言 在数字化时代&#xff0c;社区管理面临着更新流动人口信息、准确录入六实相关…