zookeeper 節點介紹及節點常用命令總結


本文為博主原創,未經允許不得轉載:

目錄:

  1. znode 節點特性 

  2. zookeeper 的四種節點類型及適用場景分析

  3. zookeeper 客戶端常用操作命令

  4. znode 數據增刪改查

  5. 節點屬性查看

  6. 節點的監聽

  7. acl權限設置

1. znode 節點特性  

  zookeeper 中節點叫znode存儲結構上跟文件系統類似,以樹級結構進行存儲。不同之外在於znode沒有目錄的概念,不能執行類似cd之類的命令。

  znode結點屬性如下:

    1 path:唯一路徑

    2 childNode:子節點

    3 stat:狀態屬性

    4 type:節點類型

2. zookeeper 的四種節點類型及適用場景分析:

類型

描述

命令

適用場景

PERSISTENT

持久節點

create /test

 

PERSISTENT_SEQUENTIAL

持久順序節點

create -s /test

適合用於分布式鎖、分布式選舉等場景

EPHEMERAL

臨時節點(不可在擁有子節點)

create -e /temp

 

適用於心跳,服務發現等場景

EPHEMERAL_SEQUENTIAL

臨時順序節點(不可在擁有子節點)

create -e -s /temp/seq

 

 

 

3. zookeeper 客戶端常用操作命令:

#創建節點
create [-s] [-e] [-c] [-t ttl] path [data] [acl]

#刪除節點,(不能存在子節點)
deleteall path

#查看節點數據 -s 包含節點狀態 -w 添加監聽 
 get [-s] [-w] path

#查看執行的歷史記錄
history 

#設置值
set [-s] [-v version] path data

#為節點設置ACL權限
setAcl [-s] [-v version] [-R] path acl

#查看節點狀態 -w 添加監聽
stat [-w] path

  創建一個臨時順序節點,並查看:

 

  臨時節點在會話關閉的時候即會刪除。   

4. znode 數據增刪改查:

# 列出子節點 
ls /
#創建節點
create /test "test is good man"
# 查看節點
get /test
# 創建子節點 
create /test/sex "man"
# 設置節點值
set /test/sex "man"
# 刪除節點
delete /test/sex
# 刪除所有節點 包括子節點
deleteall /test

 

5. 節點屬性查看

# 查看節點屬性
stat /test

  其屬性說明如下:

#創建節點的事物ID
cZxid = 0x385
#創建時間
ctime = Wed Jul 21 22:37:01 CST 2021
#修改節點的事物ID
mZxid = 0x385
#最后修改時間
mtime = Wed Jul 21 22:37:01 CST 2021
# 子節點變更的事物ID
pZxid = 0x385
#這表示對此znode的子節點進行的更改次數(不包括子節點)
cversion = 0
# 數據版本,變更次數
dataVersion = 0
#權限版本,變更次數
aclVersion = 0
#臨時節點所屬會話ID
ephemeralOwner = 0x0
#數據長度
dataLength = 17
#子節點數(不包括子子節點)
numChildren = 0

 

6. 節點的監聽:

  客戶添加 -w 參數可實時監聽節點與子節點的變化,並且實時收到通知。非常適用保障分布式情況下的數據一至性。其使用方式如下:

命令

描述

ls -w path  

監聽子節點的變化(增,刪)

get -w path

監聽節點數據的變化

stat -w path

監聽節點屬性的變化

printwatches on|off

觸發監聽后,是否打印監聽事件(默認on)

 

7. acl權限設置

    ACL全稱為Access Control List(訪問控制列表),用於控制資源的訪問權限。ZooKeeper使用ACL來控制對其znode的防問。基於scheme:id:permission的方式

  進行權限控制。scheme表示授權模式id模式對應值permission即具體的增刪改權限位。

  scheme:認證模型

方案

描述

world

開放模式,world表示全世界都可以訪問(這是默認設置)

ip

ip模式,限定客戶端IP防問

auth

用戶密碼認證模式,只有在會話中添加了認證才可以防問

digest

與auth類似,區別在於auth用明文密碼,而digest 用sha-1+base64加密后的密碼。在實際使用中digest 更常見。

 

  permission權限位

      

權限位

權限

描述

c

CREATE

可以創建子節點

d

DELETE

可以刪除子節點(僅下一級節點)

r

READ

可以讀取節點數據及顯示子節點列表

w

WRITE

可以設置節點數據

a

ADMIN

可以設置節點訪問控制列表權限

 

  

  acl 相關命令:

命令

使用方式

描述

getAcl

getAcl <path>

讀取ACL權限

setAcl

setAcl <path> <acl>

設置ACL權限

addauth

addauth <scheme> <auth>

添加認證用戶

   查看所有跟節點,並查看controller 節點的acl 權限

                

     設置 節點 acl 權限 

    

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM