ZooKeeper入门 ZooKeeper数据模型

Posted 强迫疒

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ZooKeeper入门 ZooKeeper数据模型相关的知识,希望对你有一定的参考价值。

 1 简述

ZooKeeper可以看成一种高可用性的文件系统,但是,它没有文件和目录,而是使用节点,称为znode

znode可以作为保存数据的容器(如同文件),也可以作为保存其他节点的容器(如同目录)。如下图

 

 

 2 节点中存储的数据

2.1 版本号

对于每个znode来说,存在三个版本号:

dataVersion

数据版本号,每次对节点进行修改,dataVersion的值都会增加1

cversion 
子节点的版本号。当znode的子节点有变化时,cversion 的值就会增加1

aclVersion 
ACL的版本号,关于znode的ACL(Access Control List,访问控制),可以参考

http://zookeeper.apache.org/doc/trunk/zookeeperProgrammers.html#ch_zkDataModel

以数据版本号来说明zk中版本号的作用:

每当客户端检索数据时,它将同时检索数据的版本号。并且如果一个客户端执行了某个节点的更新或删除操作,它也必须提供要被操作的数据的版本号。如果所提供的数据版本号与实际的不匹配,那么这个操作将会失败。

如下图:

 

 

2.2 事务ID

事物id, Zxid,分cZxid和 mZxid 

cZxid 
Znode创建的事务id。

mZxid 
Znode被修改的事务id,即每次对znode的修改都会更新mZxid。

如下图,是Zxid在客户端重连中的作用:

 

 2.3 时间戳

包括znode的创建时间和修改时间,创建时间是znode创建时的时间,创建后就不会改变;修改时间在每次更新znode时都会发生变化。

 

以上是关于ZooKeeper入门 ZooKeeper数据模型的主要内容,如果未能解决你的问题,请参考以下文章

ZooKeeper入门 ZooKeeper数据模型

大数据之Zookeeper:Zookeeper入门

一文带你了解大数据技术之Zookeeper(入门级)

zookeeper入门-Zookeeper命令行操作

ZooKeeper

《黑马ZooKeeper教程(ZooKeeper框架入门到精通)》