Zookeeper ZNode 数据结构原理

ZNode 学习指南

1. ZNode 基本概念
  • 什么是 ZNode:ZNode 是 Zookeeper 中的数据节点。它类似于文件系统中的文件和目录,ZNode 既可以保存数据又可以作为其他 ZNode 的父节点。
  • ZNode 的路径:每个 ZNode 在 Zookeeper 命名空间中都有一个唯一的路径,如 /app1/config
2. ZNode 类型
  • 持久节点 (Persistent ZNode):当创建持久节点时,即使客户端断开连接或会话结束,节点也会一直存在,直到被明确删除。
  • 临时节点 (Ephemeral ZNode):临时节点在创建客户端会话断开或会话过期时自动删除。
  • 顺序节点 (Sequential ZNode):当创建顺序节点时,Zookeeper 会在节点名称末尾附加一个递增的数字,确保节点名称的唯一性。
  • 持久顺序节点和临时顺序节点:持久顺序节点和临时顺序节点分别是持久节点和临时节点的顺序变体。
3. ZNode 的操作
  • 创建 ZNode:使用 create 命令可以创建 ZNode,可以指定节点类型(持久、临时、顺序)。
  • 读取 ZNode 数据:使用 get 命令可以读取 ZNode 的数据和状态。
  • 更新 ZNode 数据:使用 set 命令可以更新 ZNode 的数据。
  • 删除 ZNode:使用 delete 命令可以删除指定的 ZNode。
4. ZNode 版本控制
  • 数据版本:每个 ZNode 都有一个版本号,每次更新节点数据时,版本号递增。
  • 条件更新:可以使用版本号确保数据的一致性,只有在当前版本号与指定版本号匹配时,更新才会成功。
5. Watcher 机制
  • Watcher 简介:Watcher 是一种触发器,可以在 ZNode 的数据或状态变化时通知客户端。Watchers 是一次性的,一旦触发,必须重新设置。
  • 设置 Watcher:在读取或获取 ZNode 数据时,可以设置 Watcher。例如,使用 getData 命令时可以设置 Watcher。
  • Watcher 通知:当 ZNode 数据或状态发生变化时,Zookeeper 会向设置了 Watcher 的客户端发送通知。
6. ZNode 的 ACL(访问控制列表)
  • ACL 概述:ZNode 可以通过 ACL 进行访问控制,ACL 由一组权限组成,如读取、写入、创建、删除、管理。
  • 设置 ACL:在创建 ZNode 时可以设置 ACL,也可以通过 setACL 命令修改 ACL。
  • 检查 ACL:通过 getACL 命令可以查看 ZNode 的 ACL 配置。

示例操作

创建持久节点
import org.apache.zookeeper.ZooKeeper;
import org.apache.zookeeper.CreateMode;
import org.apache.zookeeper.ZooDefs.Ids;public class CreateZNode {private static ZooKeeper zk;private static ZookeeperConnection conn;public static void create(String path, byte[] data) throws Exception {zk.create(path, data, Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);}public static void main(String[] args) throws Exception {String path = "/sampleZNode";byte[] data = "Sample Data".getBytes();conn = new ZookeeperConnection();zk = conn.connect("localhost");create(path, data);conn.close();}
}
获取 ZNode 数据
import org.apache.zookeeper.ZooKeeper;public class GetZNodeData {private static ZooKeeper zk;private static ZookeeperConnection conn;public static byte[] getData(String path) throws Exception {return zk.getData(path, false, null);}public static void main(String[] args) throws Exception {String path = "/sampleZNode";conn = new ZookeeperConnection();zk = conn.connect("localhost");byte[] data = getData(path);System.out.println(new String(data));conn.close();}
}
更新 ZNode 数据
import org.apache.zookeeper.ZooKeeper;public class UpdateZNodeData {private static ZooKeeper zk;private static 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/30105.shtml

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

相关文章

❤️‍❤️‍❤️‍FlyFlow 工作流:支持字典管理并支持表单引用

FlyFlow 介绍 官网地址:www.flyflow.cc 演示网址:pro.flyflow.cc FlyFlow 借鉴了钉钉与飞书的界面设计理念,致力于打造一款用户友好、快速上手的工作流程工具。相较于传统的基于 BPMN.js 的工作流引擎,我们提供的解决方案显著简…

20240619每日小程序-------朋友想开发微信小程序,那就搞一把demo

下载开发工具 hbuildX 微信开发者工具 随便搞个开源项目 会员小程序 下载后导入到hbuildX 安装依赖 npm i 安装hbuildX插件 工具—》插件安装 推荐安装: 微信小程序一键打包插件sass编译 启动 选择5.用微信开发者工具启动 报错不要怕 比如&#xff1a…

微信小程序生命周期分为3种:页面级别,应用级别,组件级别

应用级别: onLaunch,onShow,onHide 页面级别:onLoad,onShow,onReady,onHide,onUnload 组件级别:

硕思闪客精灵_2024最新版下载-闪客精灵软件下载_闪客精灵应用软件

​不同领域的应用证明了能够解析Flash动画片中的视频文件并以*.fla格式进行导出。人所共知的是支持预览和播放所选的Flash动画片或元素。我们都知道除了将静态文字恢复为文本外,硕思闪客精灵提供了将它转换为矢量图的功能。相信大家都认同闪客精灵专业版的优势&…

【鲸吞法实操记录】开始挑课题

研一下的文档 小论文 主题方向未定 根据这两篇博文,总结出这个领域的一些key words (1条消息) 3D目标检测论文汇总_light169的博客-CSDN博客 (1条消息) 基于深度学习目标姿态估计的论文一览_light169的博客-CSDN博客_姿态估计论文 以下key words 应该是涵盖了 …

通用VS垂直,落地场景的抉择。

随着人工智能技术的飞速发展,大模型已成为推动产业智能化升级的核心力量。在这个竞争激烈的战场中,通用大模型和垂直大模型各自展现出独特的优势,引发了业界的广泛关注。那么,对于大模型的落地应用,谁将率先形成绝对优…

使用 ngrok 实现内网穿透

引言 ngrok 是一款流行的内网穿透工具,它允许你将本地服务器暴露到公网上。这在开发过程中非常有用,特别是当你需要从不同的地方访问你的应用或者服务时。本文将指导你如何安装和使用 ngrok,以及如何通过它实现内网穿透。 前提条件 Window…

【3】Mcgs屏幕脚本程序

目录 1.脚本程序概述1.1 脚本程序简介1.2 脚本程序编辑环境 2.脚本程序语言要素2.1 变量和常量2.2 对象2.3 事件2.4 表达式2.5 联行符2.6 运算符2.7 系统函数 3. 基本语句3.1 赋值语句3.2 条件语句3.3 循环语句3.4 跳出语句3.5 退出语句3.6 注释语句3.7 声明语句3.6 命名规则 1…

AI从云端到边缘:人员入侵检测算法的技术原理和视频监控方案应用

在当今数字化、智能化的时代,安全已成为社会发展的重要基石。特别是在一些关键领域,如公共安全、智能化监管以及智慧园区/社区管理等,确保安全无虞至关重要。而人员入侵检测AI算法作为一种先进的安全技术,正逐渐在这些领域发挥着不…

Web后端Javaee企业级开发之定时任务 Springboot整合任务框架Quartz和Task详解

定时任务 在Java EE企业级开发中,定时任务(也称为后台调度或周期性任务)是非常常见的一种功能,主要用于执行那些不需要用户交互,但需要按照预定时间间隔或事件触发的任务。Java EE提供了几个框架和API来处理这种需求&…

如何制作 PDF 文件

本文概述了如何使用 Microsoft Word、GeekerPDF、Google Docs 和 Mac Pages 创建 PDF。您还可以使用免费的 PDF 创建器;有许多可供下载或在线使用的创建器。 如何使用 Microsoft Word 创建 PDF 如果您拥有 2007 或更高版本的 Microsoft Word,创建 PDF 的…

深入解析软件架构中的分层架构

目录 前言1. 什么是分层架构1.1 分层架构的基本概念1.2 分层架构的优势 2. 分层架构的具体实现2.1 表示层2.2 应用层2.3 数据访问层2.4 数据层 3. 分层架构的实践与挑战3.1 分层架构的实践经验3.2 分层架构的常见挑战 结语 前言 在软件开发过程中,架构设计是决定项…

【 ClickHouse】 ClickHouse数据类型(整型、浮点型、布尔型、Decimal型、字符串、数组、时间类型)(二)

ClickHouse数据类型 整型 固定长度的整型,包括有符号整型或无符号整型。 1)整型范围: Int8 - [-128 : 127] Int16 - [-32768 : 32767] Int32 - [-2147483648 : 2147483647] Int64 - [-9223372036854775808 : 9223372036854775807]2)无符号整型范围&…

结构思考力:让你的思维更有条理

在这个信息爆炸的时代,如何让自己的思维更有条理,更高效地沟通显得尤为重要。最近读了《结构思考力》一书。今天,我想和大家分享一下读后感,从以下几个方面展开:1. 什么是结构思考力及其重要性;2. 为什么要…

SpringMVC—RequestMapping注解

一、RequestMapping注解 RequestMapping注解:是Spring MVC框架中的一个控制器映射注解,用于将请求映射到相应的处理方法上,具体来说,他可以将指定URL的请求绑定到一个特定的方法或类上,从而实现对请求的处理和响应。 …

汇编语言实验三 顺序结构程序设计

编写一个32为加法程序,将已经定义好的双字变量X、Y相加之和存放到变量Z中(不考虑溢出)。 .model small,c .stack 200 .data x dd 22223333H y dd 44445555H z dd ? ;Z最终值为66668888H .code .startup mov ax,word ptr x ;ptr用来指示操作…

leetcode498 对角线遍历

题目 给你一个大小为 m x n 的矩阵 mat ,请以对角线遍历的顺序,用一个数组返回这个矩阵中的所有元素。 示例 输入:mat [[1,2,3],[4,5,6],[7,8,9]] 输出:[1,2,4,7,5,3,6,8,9] 解析 本题目主要考察的就是模拟法,首…

【C语言】解决C语言报错:Null Pointer Dereference

文章目录 简介什么是Null Pointer DereferenceNull Pointer Dereference的常见原因如何检测和调试Null Pointer Dereference解决Null Pointer Dereference的最佳实践详细实例解析示例1:未初始化的指针示例2:释放内存后未将指针置为NULL示例3:…

9.回文数字

给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。 回文数 是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 例如,121 是回文,而…

洛谷:P5705【深基2.例7】数字反转

1. 题目链接 https://www.luogu.com.cn/problem/P5705 【深基2.例7】数字反转 2. 题目描述 输入一个大于等于100,小于1000的小数点后一位的浮点数,要求把这个数翻转过来 输入:一行一个浮点数 输出:一行一个浮点数 3. 我的思考 …