【4】Zookeeper数据模型
一、Znode节点是什么
1.1、概念
Znode节点是Zookeeper中数据模型中最小的数据单元。Zookeeper的数据模型是一颗树,由"/"进行分割路径。每个znode都会保存自己的数据内容,同时还会保存一些属性信息。zookeeper将所有的数据存储在内存中。
1.2、数据模型
Zookeeper的视图结构类似标准的Unix文件系统,但是没有引入文件系统中目录和文件相关概念,而是使用了自己特有的数据节点的概念,称为Znode。每个Znode上都可以保存数据,同时还可以挂载子节点,也构成了一个层次化的命名空间,称之为树。
1.3、Znode节点分类
ZooKeeper中的数据节点是有生命周期的,周期长短取决于节点类型。 ZooKeeper 将Znode节点可以分为:持久节点(PERSISTENT )、临时节点(EPHEMERAL)。同时还允许为每个节点添加一个特殊属性:顺序性(SEQUENTIAL )。具体在节点创建过程中,一般是组合使用,生成以下 4 种节点类型:
持久节点(PERSISTENT)
指在该数据节点创建后,就一直存在与Zookeeper服务器上,直到有删除操作来主动清除这个节点。不会因为创建该节点的客户端会话失效而消失。
持久顺序节点(PERSISTENT_SEQUENTIAL)
这类节点的基本特性和持久节点节点是一致的。额外的特性是其顺序性。在ZK中每个父节点会为他的第一级子节点维护一份顺序,用于记录每个子节点创建的先后顺序。基于这个特性,在创建子节点的时,可以设置这个属性,那么在创建节点过程中,ZK会自动在节点后面加一个整形数字。作为新的、完整的节点名。这个数字是由父节点维护的递增数字,其范围是整型的最大值。
临时节点(EPHEMERAL)
和持久节点不同,临时节点的生命周期和客户端会话绑定。如果客户端会话失效,那么这个节点就会自动被清除掉。注意,这里提到的是会话失效,而非TCP连接断开。
临时顺序节点(EPHEMERAL_SEQUENTIAL)
临时顺序节点的基本特性和临时节点是一致的,同样是在临时节点的基础上添加了顺序的特性。
注意:
- 临时节点下面不能创建子节点,即临时节点只能作为叶子节点。
1.4、Znode节点状态信息
参数 | 说明 |
---|---|
cZxid | 创建节点时的事务Zxid |
ctime | 创建节点时的时间 |
mZxid | 最后修改节点时的事务Zxid |
mtime | 最后修改节点时的时间 |
pZxid | 表示该节点的子节点列表最后一次修改的事务ID,添加或删除子节点会变,修改子节点数据内容不影响此Zxid |
cversion | 子节点版本号,子节点每次修改版本号加1 |
dataversion | 数据版本号,数据每次修改该版本号加1 |
aclversion | 权限版本号,权限每次修改该版本号加1 |
ephemeralOwner | 若此节点为临时节点,其值为节点Owner的会话ID;否则值为0 |
dataLength | 该节点数据域长度 |
numChildren | 该节点拥有子节点的数量 |
参考资料
参考书籍:从Paxos到Zookeeper:分布式一致性原理与实践
DeepInThought
出处:
https://www.cnblogs.com/DeepInThought
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
【4】Zookeeper数据模型的更多相关文章
- Zookeeper数据模型及其应用
Zookeeper作为分布式系统的底层协调服务有着其简单可依靠的数据模型,数据模型加之数据同步.一致性处理和可靠性,在此之上有很多经典的应用,例如,分布式锁.服务器动态上线下感知.主节点选举.数据发布 ...
- 3.Apache ZooKeeper数据模型
1. ZooKeeper自下向上的服务视图 Apache ZooKeeper是分布式应用程序的协调服务. 它旨在解决分布式应用程序中与组件协调相关的棘手问题. 它通过暴露一个简单而强大的接口来实现这一 ...
- zookeeper系列之十—zookeeper数据模型
团队博客:http://rdc.taobao.com/team/jm/archives/tag/zookeeper <ZooKeeper快速搭建>http://nileader.blog. ...
- zookeeper系列之九—zookeeper数据模型
http://nileader.blog.51cto.com/1381108/946788 本文主要讲述了Zookeeper的数据模型,包括Zookeeper的数据视图,节点的层次结构以及节点类型等基 ...
- ZooKeeper 数据模型
本文主要讲述ZooKeeper的数据模型,包括ZooKeeper的数据视图,节点的层次结构以及节点类型等基本属性.Zookeeper的视图结构类似标准的Unix文件系统,但是没有引入文件系统相关概念: ...
- ZooKeeper 数据模型:节点的特性与应用
zk的基础知识基本分为三大模块 数据模型 ACL 权限控制 Watch 监控 数据模型 默认配置文件 # The number of milliseconds of each tick tickTim ...
- ZooKeeper数据模型
ZooKeeper有一个分层的命名空间,类似分布式文件系统.它们唯一的区别就在于在命名空间中每个节点可以有数据关联作为它们的子节点.这就像有一个文件系统允许文件也作为文件目录.节点路径通常表示为规范的 ...
- 【转载】zookeeper数据模型
[转载请注明作者和原文链接, 如有谬误, 欢迎在评论中指正. ] ZooKeeper的数据结构, 与普通的文件系统极为类似. 见下图: 图片引用自developerworks 图中的每个节点称为一个 ...
- ZooKeeper入门(三) ZooKeeper数据模型
1 简述 ZooKeeper可以看成一种高可用性的文件系统,但是,它没有文件和目录,而是使用节点,称为znode. znode可以作为保存数据的容器(如同文件),也可以作为保存其他节点的容器(如同目录 ...
随机推荐
- WPF学习笔记 - .Net Framework的分离存储技术
写入: protected override void OnClosed(EventArgs e) { base.OnClosed(e); IsolatedStorageFile f = Isolat ...
- FullSync不支持中文文件名
FullSync,能实现多种方式.协议的目录同步软件,但不支持中文文件名.
- Qt编写自定义控件13-多态进度条
前言 多态进度条,顾名思义,有多重状态,其实本控件主要是用来表示百分比进度的,由于之前已经存在了百分比进度条控件,名字被霸占了,按照先来先得原则,只好另外取个别名叫做多态进度条,应用场景是,某种任务有 ...
- Linux新增开放端口
CentOS系统 开放端口的方法: 方法一:命令行方式 1. 开放端口命令: /sbin/iptables -I INPUT -p tcp --dport 8080 -j ...
- 监控数据库DDL操作日志
背景 为了监控好生产环境下各个数据库服务器上DDL操作日志,便于运维工程师管控好风险,我们有必要关注当前实例下的所有的DDL操作以及对应的IP和hostname. 测试环境 Microsoft SQL ...
- python3速查参考- python基础 2 -> if语句应用 + while循环应用
if语句应用之——求最大值 """ 求三个数字中的最大值,并打印出来 """ a = int(input("a:")) ...
- lamp的动静分离部署
一.lamp分离部署工作图 二.LAMP的安装与配置 1.环境准备 2.对 PHP 服务器进行部署 #以下为安装PHP及其依赖 [root@php ~ ]# .tar.gz -C /usr/src [ ...
- Java垃圾收集器与内存分配策略
程序的计数器.虚拟机栈.本地方法栈3个区域随线程而生,随线程而灭:栈中的栈侦随着方法的进入和退出而有条不紊地执行出栈和如栈操作. 判断对象是不是已经死亡的方法: 一.引用计数算法: 给对象添加一个引用 ...
- 微信JSAPI支付接口,支付完成后关闭当前窗口
一.把demo里的这一段: success: function (res) { // 支付成功后的回调函数 if (res.err_msg == "get_brand_wcpay_reque ...
- (模板)luoguP3806(树上点分治模板题)
点分治的写法1: 题目链接:https://www.luogu.org/problem/P3806 题意:给出一颗带边权的树,结点数n<=1e4,每条边有权值<=1e4,有m组询问(m&l ...