当前位置: 首页 > 分布式系统 > 正文

ZooKeeper 数据模型

关键字:
1 星2 星3 星4 星5 星 (暂无评分)
Loading ... Loading ...
baidu_share

首先我们来看下面这张图,对ZooKeeper上的数据节点有一个大概的认识。这个图来自zookeeper官方文档中,相信很多开发者在网上也都看到过很多次了。在ZK中,每一个数据节点称为一个znode,所有znode按层次化进行组织,形成一棵树。znode是一个跟Unix文件系统路径相似的节点,由一系列由斜杠(/ )进行分割的路径表示。可以向这个节点中写入数据,也可以在节点下面创建子节点。
085951545

节点类型

每个节点是有生命周期的,这取决于节点的类型。在ZooKeeper中,节点类型可以分为持久节点(PERSISTENT )、临时节点(EPHEMERAL),以及时序节点(SEQUENTIAL ),具体在节点创建过程中,一般是组合使用,可以生成以下4种节点类型:

持久节点

所谓持久节点,是指在节点创建后,就一直存在,直到有删除操作来主动清除这个节点——不会因为创建该节点的客户端会话失效而消失。

持久顺序节点

这类节点的基本特性和上面的节点类型是一致的。额外的特性是,在ZK中,每个父节点会为他的第一级子节点维护一份时序,会记录每个子节点创建的先后顺序。基于这个特性,在创建子节点的时候,可以设置这个属性,那么在创建节点过程中,ZK会自动为给定节点名加上一个数字后缀,作为新的节点名。这个数字后缀的范围是整型的最大值。

临时节点

和持久节点不同的是,临时节点的生命周期和客户端会话绑定。也就是说,如果客户端会话失效,那么这个节点就会自动被清除掉。注意,这里提到的是会话失效,而非连接断开。另外,在临时节点下面不能创建子节点。

临时顺序节点

节点信息

1
2
3
4
5
6
7
8
9
10
11
12
13
[zk: localhost:2181(CONNECTED) 4] get /YINSHI.MONITOR.ALIVE.CHECK 
?t 10.232.102.191:21811353595654255 
cZxid = 0x300000002 
ctime = Thu Dec 08 23:29:53 CST 2011 
mZxid = 0xe00008bbf 
mtime = Thu Jul 28 07:17:34 CST 2012 
pZxid = 0x300000002 
cversion = 0 
dataVersion = 2164293 
aclVersion = 0 
ephemeralOwner = 0x0 
dataLength = 39 
numChildren = 0

上面这个信息,是在ZK命令行的一个输出信息,从这个输出内容中可以清楚的看到,ZK的一个节点包含了哪些信息。其中比较重要的信息包括节点的数据内容,节点创建/修改的事务ID,节点/修改创建时间,当前的数据版本号,数据内容长度,子节点个数等。

本文固定链接: http://www.chepoo.com/zookeeper-data-model.html | IT技术精华网

ZooKeeper 数据模型:等您坐沙发呢!

发表评论