ZooKeeper入門(三) ZooKeeper數據模型
阿新 • • 發佈:2017-11-09
每次 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數據模型