ZooKeeper常用命令

user2025發表於2020-10-06

連線和斷開節點

  • 檢視ZooKeeper的狀態和角色:ZooKeeper安裝目錄/bin/zkServer.sh status
  • 通過ZooKeeper客戶端:ZooKeeper安裝目錄/bin/zkCli.sh -server ip地址:port
  • 客戶端連線成功後,輸出ZooKeeper支援的所有命令:help
  • 客戶端連線成功後,斷開連線:quit

節點控制

  • 檢視指定路徑下包含的節點:
# 檢視/目錄下包含的節點
ls  /
# 檢視 /test/node1目錄下包含的節點
ls /test/node1
  • 建立節點
    建立節點時,可以不帶資料,此時獲取該節點的資料,返回null
    臨時節點:會話結束,節點刪除
    -s:有序節點 -e:臨時節點
# 建立永久無序節點
create  /test   "資料"
# 建立永久有序節點
create  -s  /test  "資料"
# 建立臨時無序節點
create  -e  /test  "資料"
# 建立臨時有序節點
create -e -s  /test "資料"
create -es /test "資料"
  • 讀取節點資料
get 節點路徑
get /test
  • 獲取節點詳細資訊
get -s 節點路徑
get -s /test
  • 檢視當前節點的屬性
stat 節點路徑
  • 檢視當前節點的子節點列表
ls 節點路徑

返回結果:

test  #返回結果
cZxid = 0x200000013
ctime = Fri Aug 14 05:59:08 UTC 2020
mZxid = 0x200000017
mtime = Fri Aug 14 06:24:43 UTC 2020
pZxid = 0x200000013
cversion = 0
dataVersion = 2   #節點資料版本號
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 4
numChildren = 0

在這裡插入圖片描述

  • 修改節點資料
set 節點路徑 新資料

【方式2】帶樂觀鎖的方式修改節點資料:

set -v 版本號 節點路徑 資料
set -v 1 /test/a0000000006 12

在這裡插入圖片描述

基於版本號進行修改,當set命令傳入的版本號與當前節點的版本號不一致時,zookeeper會拒絕修改。

  • 刪除節點
#刪除節點
delete 節點路徑

#遞迴刪除,可以刪除某個節點及其子節點
deleteall 節點路徑

帶版本刪除節點

delete -v 版本號 節點路徑
delete -v 12 /test/a0000000006

監聽器

(1) 使用【get -w 節點路徑】註冊的監聽器能夠在節點資料發生變化,向客戶端發出通知,當觸發一次監聽事件後,該監聽就會立即失效

get -w 節點路徑

在這裡插入圖片描述
(2)使用【stat -w 節點路徑】註冊的監聽器能夠在節點資料發生變化,向客戶端發出通知,當觸發一次監聽事件後,該監聽就會立即失效

stat -w 節點路徑

(3)使用【ls -w 節點路徑】註冊的監聽器能監聽該節點下的所有子節點的增加和刪除操作,當觸發一次監聽事件後,該監聽就會立即失效

ls -w /test

在這裡插入圖片描述
切記:一次監聽器的註冊只能捕獲一次事件,使用一次後立即失效

ACL 訪問許可權控制列表

acl: access control list
Zookeeper的許可權控制是針對每個znode節點的,需要對每個節點設定許可權,子節點不會繼承父節點的許可權,客戶端無權訪問某節點,但可能訪問它的子節點
zookeeper的許可權模式:world、IP、auth、digest

在這裡插入圖片描述

  • world模式:只有一個使用者,anyone,代表登入zookeeper的所有人(預設)
  • ip模式:對客戶端進行ip地址認證
setAcl 節點路徑  許可權模式:授權物件:許可權
#ip地址為192.168.1.2的客戶端可以對節點擁有增刪改查的許可權
setAcl /test ip:192.168.1.2:crwda 
  • auth模式:使用已新增認證的使用者認證
  • digest:使用使用者名稱:密碼的方式認證

相關文章