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 相关文章:
Zookeeper ZNode 数据结构原理
ZNode 学习指南 1. ZNode 基本概念 什么是 ZNode:ZNode 是 Zookeeper 中的数据节点。它类似于文件系统中的文件和目录,ZNode 既可以保存数据又可以作为其他 ZNode 的父节点。ZNode 的路径:每个 ZNode 在 Zookeeper 命名空间中都有一个唯一的路径,如 /app1/config。2. ZNod…...
Golang - 90天从新手到大师
开篇 最近有很多小伙伴都在寻找go语言完整学习资料,我整理了一些Golang方面的知识,方便大家学习。内容从最基础的入门到项目设计,希望帮助更多想了解和学习Go语言的伙伴。 因为是持续创作,所以也会持续更新。有些章节目录还没有…...
MyBatis常用转义字符 大于、小于、大于等于、小于等
在Mybatis编写特殊常用字符你会发现会报错,比如常用的<,>,<,> 等,原因是与xml文件的元素<>冲突,所以需要转义。整理转义字符如下: 符号原始字符转义字符大于>>大于等于>>小于<<小于等于<<和&…...
Python --- 如何修改Jupyter Notebook在本地保存文件的默认路径?
如何修改Jupyter Notebook在本地保存文件的默认路径? 一直以来都比较喜欢jupter notebook,自从用了以后就爱上了。平时用的时候,因为大多都是临时调用,每次在界面里直接new一个新的file就开干。 曾经也想过我创建的这些python文件…...
大模型 舆情分析 数据构造 prompt提示词 经验分享 数据准备
最近在做舆情分析,需要执行比较复杂的任务流程(例如同时执行人名识别、相关机构识别、90分类),传统Bert无法胜任,因此尝试使用大模型进行处理。 下面的一些提示词是我用来准备数据的,这些数据可以按照不同…...
这些已经死去的软件,依旧无可替代
互联网这条长河里,软件们就像流星一样,一闪而过。有的软件火过一段时间,然后就慢慢消失了。 说不定有些软件你以前天天用,但不知道从什么时候开始就不再用了。时间一天天过去,我们的热情、记忆都在消退,还…...
SYD88xx使代码在RAM内存中执行/运行
SYD88xx使代码在RAM中执行 SYD8811/8810默认都是cache模式的,但是在代码首次运行的时候,需要将代码从flash搬到cache中执行,这样第一次的代码执行可能会比较慢,这里提供一个将需要提速的代码放到RAM中执行的方法。 对于SYD8811…...
基于支持向量机的垃圾邮件分类,使用SVM+flask+vue
sms-classify 基于支持向量机的垃圾邮件分类,使用SVMflaskvue 数据集和源码地址 数据集 SMS Spam Collection Data Set 来源于 UCI。样例被分为非垃圾邮件(86.6%)和垃圾邮件(13.4%),数据格式如下ÿ…...
目标检测数据集 - 零售食品LOGO检测数据集下载「包含VOC、COCO、YOLO三种格式」
数据集介绍:零售食品 LOGO 检测数据集,真实零售食品 LOGO 高质量商品图片数据,数据集含常见零售食品 LOGO 图片,包括饮料类、酒类、调味品类、膨化饼干类、巧克力类、常见零食类等等。数据集类别丰富,标注标签包含 150…...
47.PyCharm P版突然无法启动
目录 1.启动cmd.exe,进到pycharm\bin目录,启动.\pycharm.bat,如果正常,就像下面这个样子,如果不正常,则会报错, 2.用记事本打开pycharm.bat文件,加上以下代码后 今晨,无…...
「动态规划」如何求粉刷房子的最少花费?
LCR 091. 粉刷房子https://leetcode.cn/problems/JEj789/description/ 假如有一排房子,共n个,每个房子可以被粉刷成红色、蓝色或者绿色这三种颜色中的一种,你需要粉刷所有的房子并且使其相邻的两个房子颜色不能相同。当然,因为市…...
代码随想录算法训练营DAY41|背包问题 二维 、背包问题 一维、416. 分割等和子集
背包问题 二维 题目链接:背包问题 二维 def bag_weight_problem(n,space,weight,value):dp [[0 for i in range(space1)]for j in range(n)]for i in range(weight[0], space1):dp[0][i]value[0]for j in range(1, n):for k in range(space1):if weight[j]>k:…...
gitlab2024最新版安装
系统:redhat9.0 gitlab版本:gitlab-ce-16.10.7-ce.0.el9.x86_64.rpm 安装组件&包依赖:https://packages.gitlab.com/gitlab/gitlab-ce/packages/ol/9/gitlab-ce-16.10.7-ce.0.el9.x86_64.rpm 参考: 前提: 下载gitl…...
2022C语言二级真题
目录 数组逆序重放 题目描述 样例 最长最短单词 题目描述 样例 统计误差范围内的数 题目描述 样例 有趣的跳跃 题目描述 样例 数字放大 题目描述 样例 内部元素之和 题目描述 样例 满足条件的数的累加 题目描述 样例 偶数降序输出 题目描述 样例 字符统…...
智慧购房:链家网上海在售楼盘数据解析与模型构建
1.项目背景 随着中国经济的快速发展,上海作为国际化大都市,其房地产市场一直备受关注,购房者在面对庞大且复杂的楼盘信息时,往往感到困惑和不知所措,为了帮助购房者更好地了解市场行情,做出明智的购房决策,本项目选择了链家网上海市在售楼盘数据,进行了全面的数据分析…...
二进制数转字符串
题目链接 二进制数转字符串 题目描述 注意点 32位包括输出中的 “0.” 这两位题目保证输入用例的小数位数最多只有 6 位 解答思路 将小数转为二进制的思路是将小数乘2,如果整数部分为1,则说明第i位是1(第i位则乘了2的几次方)…...
WINDOWS系统jdk和maven明明安装了cmd里却无法使用相关命令
今天当了回s b 新电脑jdk和maven装是装了,系统变量也配置了,但没配置完,javahome和mavenhome没配置,结果cmdjdk和maven版本都查不到,我真s b啊 配置 JAVA_HOME 环境变量: 右键点击“此电脑”或者“我的电…...
基于EasyAnimate模型的视频生成最佳实践
EasyAnimate是阿里云PAI平台自主研发的DiT的视频生成框架,它提供了完整的高清长视频生成解决方案,包括视频数据预处理、VAE训练、DiT训练、模型推理和模型评测等。本文为您介绍如何在PAI平台集成EasyAnimate并一键完成模型推理、微调及部署的实践流程。 …...
linux最大线程数限制及打开最大文件数
1.root用户下执行 ulimit -a 然后查看 max user processes 这个值通常是系统最大线程数的一半 max user processes:当前用户同时打开的进程(包括线程)的最大个数为 2.普通用户下 ulimit -a 出现的max user processes的值 默认是 /etc/security/limits.d/20-nproc.co…...
MyBatis系列七: 一级缓存,二级缓存,EnCache缓存
缓存-提高检索效率的利器 官方文档 一级缓存基本介绍快速入门Debug一级缓存执行流程一级缓存失效分析 二级缓存基本介绍快速入门Debug二级缓存执行流程注意事项和使用细节 mybatis的一级缓存和二级缓存执行顺序小实验细节说明 EnCache缓存基本介绍配置和使用EhCache细节说明 My…...
OpenClaw多模态飞书助手:Qwen3-VL:30B实战详解
OpenClaw多模态飞书助手:Qwen3-VL:30B实战详解 1. 为什么需要多模态飞书助手? 去年夏天,我负责一个跨部门协作项目时,每天要处理上百条飞书消息。最头疼的是同事发来的各种截图——有的是数据报表需要整理,有的是会议…...
C++ 模板与泛型编程入门
C 模板与泛型编程入门 模板把类型(及非类型参数)作为参数,在编译期由编译器按用法生成具体函数或类,是 C 泛型编程与 STL 的基础。下文以 Max、简单类模板、选择排序及可定制比较器为例说明常见写法;排序复杂度为 (O(…...
SAS(Serial Attached SCSI)在企业级存储中的核心设计与实战解析
1. SAS技术在企业级存储中的核心价值 如果你拆开过企业级存储设备,大概率会看到那些带着蓝色或黑色连接器的硬盘背板——这就是SAS技术的战场。作为存储架构师,我经手过的全闪存阵列和磁盘柜里,90%的核心连接都依赖SAS协议。和消费级SATA相比…...
ESP32嵌入式系统设计与实现指南
1. 项目概述1.1 系统架构本项目基于ESP32主控芯片设计,采用模块化架构实现多功能嵌入式系统。系统包含以下核心模块:主控单元:ESP32-WROOM-32D模组电源管理:TPS63020升降压转换器传感器接口:I2C/SPI多协议兼容设计人机…...
51单片机项目避坑:用ADC0804读PT100信号,你的滤波和标度变换做对了吗?(附源码分析)
51单片机PT100温度检测实战:从ADC采样到标度变换的完整设计解析 在工业温度测量领域,PT100凭借其优异的线性度和稳定性成为首选传感器之一。不同于常见的DS18B20数字温度传感器,PT100需要配合精密信号调理电路和AD转换器才能实现准确测量。本…...
想入行5G网络优化工程师?这6个求职陷阱你必须知道
5G网络优化工程师由于其入职门槛低,需求高,成为了不少想转行的人关注的岗位。 但对于刚入行的小白来说,求职路上往往布满陷阱。 作为一名行业接触过一些内幕的过来人,总结了6条找工作的核心建议,希望能帮大家少走弯路…...
对抗攻击新思路:为什么Diffusion模型比GAN更适合生成隐蔽攻击样本?
扩散模型在对抗攻击领域的突破性优势:从理论到实践 当我们在讨论机器学习安全时,对抗攻击一直是个令人着迷又充满挑战的话题。想象一下,只需对输入图像做几乎不可察觉的微小改动,就能让最先进的分类模型完全"失明"——这…...
小红书笔记API避坑指南:数据结构解析与常见错误排查
小红书笔记API避坑指南:数据结构解析与常见错误排查 在小红书生态中,API作为连接开发者与平台数据的桥梁,其重要性不言而喻。但许多开发者在实际调用过程中,常常陷入数据结构理解不透、错误排查效率低下的困境。本文将从小红书笔记…...
【实战解析】从期末试题到工程实践:摄影测量核心概念与计算全攻略
1. 从试卷到工地:摄影测量核心概念实战指南 第一次接触航测项目时,我盯着任务书上的"相机选型""航线规划"等要求完全懵了。这和期末考试那些名词解释、计算题有什么关系?直到在工地摔打半年后才明白,那些看似…...
FreeRTOS+LwIP 2.2.0实战:手把手教你理解tcpip_thread的消息处理机制
FreeRTOSLwIP 2.2.0实战:深入解析tcpip_thread的消息驱动架构 在嵌入式网络开发中,理解协议栈的线程模型是构建稳定系统的关键。当FreeRTOS遇上LwIP,tcpip_thread就像一位不知疲倦的邮差,日夜处理着来自各方的网络报文。本文将带您…...
