【Hadoop】ZooKeeper数据模型Znode

  • 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.mzph.cn/news/578035.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分类预测 | Matlab实现SCSO-SVM基于沙猫群优化算法优化支持向量机的多变量分类预测【23年新算法】

分类预测 | Matlab实现SCSO-SVM基于沙猫群优化算法优化支持向量机的多变量分类预测【23年新算法】 目录 分类预测 | Matlab实现SCSO-SVM基于沙猫群优化算法优化支持向量机的多变量分类预测【23年新算法】分类效果基本描述程序设计参考资料 分类效果 基本描述 1.Matlab实现SCSO-…

C# WPF上位机开发(windows pad上的应用)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 大部分同学可能都认为c# wpf只能用在pc端。其实这是一种误解。c# wpf固然暂时只能运行在windows平台上面,但是windows平台不仅仅是电脑…

听GPT 讲Rust源代码--src/tools(27)

File: rust/src/tools/clippy/clippy_lints/src/methods/suspicious_to_owned.rs 文件rust/src/tools/clippy/clippy_lints/src/methods/suspicious_to_owned.rs的作用是实施Clippy lint规则,检测产生潜在性能问题的字符转换代码,并给出相关建议。 在Rus…

概率论中的 50 个具有挑战性的问题 [第 6 部分]:Chuck-a-Luck

一、说明 我最近对与概率有关的问题产生了兴趣。我偶然读到了弗雷德里克莫斯特勒(Frederick Mosteller)的《概率论中的五十个具有挑战性的问题与解决方案》)一书。我认为创建一个系列来讨论这些可能作为面试问题出现的迷人问题会很有趣。每篇…

详解ibm_t60(945)的板子的保护隔离和ec的待机供电

1.,首先看ec待机条件: 待机供电,32k时钟,复位,适配器检测,开关信号。但是视频居然是找适配器的接口,跟着视频走,所以我先找打了适配器接口j24。vint20为公共点,我查了vint20的所有接线发现没有小…

js右击自定义菜单

功能点&#xff1a;右击阻止默认事件 根据js提供方法window.getSelection()判断当前有值则出现菜单 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-w…

现代 NLP:详细概述,第 1 部分:transformer

阿比吉特罗伊 一、说明 近五年来&#xff0c;随着 BERT 和 GPT 等思想的引入&#xff0c;我们在自然语言处理领域取得了巨大的成就。在本文中&#xff0c;我们的目标是逐步深入研究改进的细节&#xff0c;并了解它们带来的演变。 二、关注就是你所需要的 2017 年&#xff0c;来…

CSRF(Pikachu)

CSRF&#xff08;get&#xff09; 首先我们先登录账号 admin 密码是&#xff1b;123456 点击修改个人信息 用F12或者BP 抓包看看我们的url 那么构成的CSRF攻击payload为http://pikachu.shifa23.com/pikachu/vul/csrf/csrfget/csrf_get_edit.php?sexboy&phonenum”手机…

美团开店宝集成策略:API连接助力用户运营与客服系统

无代码开发与美团开店宝API的协同作用 随着电子商务的快速发展&#xff0c;商家们迫切需要一种既能提高效率又能降低技术门槛的电商管理方案。美团开店宝API提供了这样一种解决方案&#xff0c;特别是当与无代码开发结合时&#xff0c;它的优势更加明显。无代码开发免去了商家…

44.常用shell之 export - 设置或显示环境变量 的用法及衍生用法

export 是一个在类 Unix 系统的 shell 中常用的命令&#xff0c;用于设置或显示环境变量。环境变量是在操作系统层面定义的&#xff0c;用于控制程序的行为和访问系统资源。以下是 export 命令的基本用法和一些衍生用法的示例&#xff1a; 基本用法 设置环境变量: export VARv…

Django-REST-Framework 如何快速生成Swagger, ReDoc格式的 REST API 文档

1、API 接口文档的几种规范格式 前后端分离项目中&#xff0c;使用规范、便捷的API接口文档工具&#xff0c;可以有效提高团队工作效率。 标准化的API文档的益处&#xff1a; 允许开发人员以交互式的方式查看、测试API接口&#xff0c;以方便使用将所有可暴露的API接口进行分…

普冉PY32系列(十四) 从XL2400迁移到XL2400P

目录 普冉PY32系列(一) PY32F0系列32位Cortex M0 MCU简介普冉PY32系列(二) Ubuntu GCC Toolchain和VSCode开发环境普冉PY32系列(三) PY32F002A资源实测 - 这个型号不简单普冉PY32系列(四) PY32F002A/003/030的时钟设置普冉PY32系列(五) 使用JLink RTT代替串口输出日志普冉PY32…

React快速入门之组件

组件 文件&#xff1a;Profile.js export default function Profile({isPacked true&#xff0c;head,stlyeTmp,src,size 80}) {if (isPacked) {head head " ✔";}return (<div><h1>{head}</h1><imgsrc{src}alt"Katherine Johnson&q…

cmake 入门笔记

以下内容为本人的著作&#xff0c;如需要转载&#xff0c;请声明原文链接 微信公众号「englyf」https://mp.weixin.qq.com/s/dUmsmiwzULQKmjfFILDdag 1. cmake 是什么&#xff1f; 这些年大型 C/C 工程都纷纷转到了 cmake 环境下&#xff0c;那么这个工具到底有什么魅力吸引着…

电商数据分析-02-电商业务介绍及表结构

参考 电商业务简介 大数据项目之电商数仓、电商业务简介、电商业务流程、电商常识、业务数据介绍、电商业务表、后台管理系统 举个例子:&#x1f330; 1.1 电商业务流程 电商的业务流程可以以一个普通用户的浏览足迹为例进行说明&#xff0c;用户点开电商首页开始浏览&…

Guava的Joiner的日常使用

具体使用参考官方文档&#xff1a;https://github.com/google/guava/wiki/StringsExplained#joiner//1 处理&#xff0c;为null的值&#xff0c;替换 String join Joiner.on("_").useForNull("*").join("1", "2", 90, 100,110,109,20…

shell 编程中内置的变量(冷门又好用)

简介 分别盘点一下 shell 中的内置变量&#xff0c;真的巨好用&#xff01;&#xff01;&#xff01;包括&#xff1a;环境变量类、shell 变量类、终端设置类和其他一些变量。 常用的内置变量目录如下 1. 环境变量类 $MACHTYPE&#xff1a;机器类型 $OSTYPE&#xff1a;操作…

JVM初识-----01章

一.虚拟机与java虚拟机的区别以及共同点 1.虚拟机&#xff08;Virtual Machine&#xff0c;简称VM&#xff09; 是一种能够在物理计算机上模拟一台完整的计算机系统的软件。它运行在宿主操作系统之上&#xff0c;可以提供一个独立的运行环境&#xff0c;使得在不同的操作系统上…

【深度学习-目标检测】03 - Faster R-CNN 论文学习与总结

论文地址&#xff1a;Faster R-CNN: Towards Real-Time ObjectDetection with Region Proposal Networks 论文学习 1. 摘要与引言 研究背景与挑战&#xff1a;当前最先进的目标检测网络依赖于 区域提议&#xff08;Region Proposals&#xff09;来假设目标的位置&#xff0c…

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证书…