1. 程式人生 > >ZooKeeper入門(三) ZooKeeper數據模型

ZooKeeper入門(三) ZooKeeper數據模型

每次 con ges 可用 同文件 2.3 per 而是 創建時間

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數據模型