1. 程式人生 > >zookeeper 之簡單操作

zookeeper 之簡單操作

ZooKeeper的資料模型及其API支援以下九個基本操作:
這裡寫圖片描述
我們來使用ZooKeeper Java shell對上面中提到的ZooKeeper操作進行演示:

用ThisIsTheRootNode作為資料建立一個名為root的znode:

[zk: localhost(CONNECTED) 0] create /root "ThisIsTheRootNode"
Created /root

獲取剛建立的root的znode的內容:

[zk: localhost(CONNECTED) 1] get /root
"ThisIsTheRootNode"

用ThisIsChild-1作為資料為root建立一個名為child-1的子節點:

[zk: localhost(CONNECTED) 2] create /root/child-1 "ThisIsChild-1"
Created /root/child-1

用ThisIsChild-2作為資料為root建立一個名為child-2的子節點:

[zk: localhost(CONNECTED) 3] create /root/child-2 "ThisIsChild-2"
Created /root/child-2

列出root的子節點:

[zk: localhost(CONNECTED) 4] ls /root
[child-2, child-1]

獲取root的訪問控制列表:

[zk: localhost(CONNECTED) 5] getAcl /root
'world,'anyone
: cdrwa

由於root擁有2個子節點,所以不允許刪除root:

[zk: localhost(CONNECTED) 6] delete /root
Node not empty: /root

刪除子節點child-1:

[zk: localhost(CONNECTED) 7] delete /root/child-1

刪除子節點child-2:

[zk: localhost(CONNECTED) 8] delete /root/child-2

列出root的內容:

[zk: localhost(CONNECTED) 9] ls2 /root
[]

刪除root:

[zk: localhost(CONNECTED) 10] delete /root

ZooKeeper名稱空間中的每個znode都有一個與之關聯的stat結構,類似於Unix/Linux檔案系統中檔案的stat結構。 znode的stat結構中的欄位顯示如下,各自的含義如下:

  • cZxid:這是導致建立znode更改的事務ID。
  • mZxid:這是最後修改znode更改的事務ID。
  • pZxid:這是用於新增或刪除子節點的znode更改的事務ID。
  • ctime:表示從1970-01-01T00:00:00Z開始以毫秒為單位的znode建立時間。
  • mtime:表示從1970-01-01T00:00:00Z開始以毫秒為單位的znode最近修改時間。
  • dataVersion:表示對該znode的資料所做的更改次數。
  • cversion:這表示對此znode的子節點進行的更改次數。
  • aclVersion:表示對此znode的ACL進行更改的次數。
  • ephemeralOwner:如果znode是ephemeral型別節點,則這是znode所有者的 session ID。 如果znode不是ephemeral節點,則該欄位設定為零。
  • dataLength:這是znode資料欄位的長度。
  • numChildren:這表示znode的子節點的數量。

在ZooKeeper Java shell中,可以使用stat或ls命令檢視znode的stat結構。 具體說明如下:

  • 使用stat命令檢視znode的stat結構:
[zk: localhost(CONNECTED) 23] stat /znode
cZxid = 0x200000024
ctime = Sat Jun 09 14:55:42 CST 2018
mZxid = 0x200000024
mtime = Sat Jun 09 14:55:42 CST 2018
pZxid = 0x200000026
cversion = 2
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 14
numChildren = 2
  • 使用ls2命令檢視znode的stat結構:
[zk: localhost(CONNECTED) 27] ls -s /znode
[child-1, child-2]cZxid = 0x200000024
ctime = Sat Jun 09 14:55:42 CST 2018
mZxid = 0x200000024
mtime = Sat Jun 09 14:55:42 CST 2018
pZxid = 0x200000026
cversion = 2
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 14
numChildren = 2