定義
Zookeeper的視圖結構和標準的Unix文件系統類似,其中每個節點稱爲數據節點或Znode,每個znode可以存儲數據,還可以掛載子節點,因此可以稱之爲“樹”。
特性
1、在Zookeeper中,znode是一個跟Unix文件系統路徑相似的節點,可以往這個節點存儲或獲取數據
2、通過客戶端可對znode進行增刪改查的操作,還可以註冊watcher監控znode的變化。
節點類型
1、持久節點(PERSISTENT)
客戶端與服務端端口連接後,該節點依然存在,除非快照文件被刪除。
下圖中,創建了持久化節點water。
2、持久化順序節點(PERSISTENT_SEQUENTIAL)
客戶端與zookeeper斷開連接後,該節點依舊存在,只是Zookeeper給該節點名稱進行順序編號。
在下圖中,創建了water的持久順序節點,Zookeeper自動給節點添加了序列號,最後節點爲water0000000006。
同時我們看屬性ephemeralOwner是空值,表明該節點爲持久化節點。
3、臨時節點(EPHEMERAL)
客戶端與zookeeper斷開連接後,該節點被刪除。
在下圖中,在持久化節點water下創建臨時節點aaa。我們發現ephemeralOwner屬性不爲空值,表明該節點爲臨時節點。
4、臨時順序節點(EPHEMERAL_SEQUENTIAL)
客戶端與zookeeper斷開連接後,該節點被刪除,只是Zookeeper給該節點名稱進行順序編號。
下圖中,創建臨時節點bbb,系統自動帶上了學列號。
注意:臨時下不能再創建子節點
在下圖中,我們嘗試在臨時節點/water/aaa下創建節點ccc,系統提示不允許在臨時節點下創建節點。
節點屬性
序號 |
屬性 |
數據結構 |
描述 |
1 |
czxid |
long |
節點被創建的Zxid值 |
2 |
mzxid |
long |
節點被修改的Zxid值 |
3 |
pzxid |
long |
子節點最有一次被修改時的事務ID |
4 |
ctime |
long |
節點被創建的時間 |
5 |
mtime |
long |
節點最後一次被修改的時間 |
6 |
versoin |
long |
節點被修改的版本號, |
7 |
cversion |
long |
節點的所擁有子節點被修改的版本號 |
8 |
aversion |
long |
節點的ACL被修改的版本號 |
9 |
emphemeralOwner |
long |
如果此節點爲臨時節點,那麼它的值爲這個節點擁有者的會話ID;否則,它的值爲0 |
10 |
dataLength |
int |
節點數據域的長度 |
11 |
numChildren |
int |
節點擁有的子節點個數 |