zookeeper結構和命令
“引用自傳智大數據視頻課程資料”
1.1. zookeeper特性
1、Zookeeper:一個leader,多個follower組成的集群
2、全局數據一致:每個server保存一份相同的數據副本,client無論連接到哪個server,數據都是一致的
3、分布式讀寫,更新請求轉發,由leader實施
4、更新請求順序進行,來自同一個client的更新請求按其發送順序依次執行
5、數據更新原子性,一次數據更新要么成功,要么失敗
6、實時性,在一定時間范圍內,client能讀到最新數據
1.2. zookeeper數據結構
1、層次化的目錄結構,命名符合常規文件系統規范(見下圖)
2、每個節點在zookeeper中叫做znode,並且其有一個唯一的路徑標識
3、節點Znode可以包含數據和子節點(但是EPHEMERAL類型的節點不能有子節點,下一頁詳細講解)
4、客戶端應用可以在節點上設置監視器(后續詳細講解)
1.3. 數據結構的圖

1.4. 節點類型
1、Znode有兩種類型:
短暫(ephemeral)(斷開連接自己刪除)
持久(persistent)(斷開連接不刪除)
2、Znode有四種形式的目錄節點(默認是persistent )
PERSISTENT 持久
PERSISTENT_SEQUENTIAL(持久序列/test0000000019 )
EPHEMERAL 短暫
EPHEMERAL_SEQUENTIAL 短暫帶序列
3、創建znode時設置順序標識,znode名稱后會附加一個值,順序號是一個單調遞增的計數器,由父節點維護
4、在分布式系統中,順序號可以被用於為所有的事件進行全局排序,這樣客戶端可以通過順序號推斷事件的順序
1.5. zookeeper命令行操作
運行 zkCli.sh –server <ip>進入命令行工具
1、ls
ls命令來查看當前 ZooKeeper 中所包含的內容:
[zk: 202.115.36.251:2181(CONNECTED) 1] ls /
2、 create
create 命令創建了一個新的 znode 節點“ zk ”以及與它關聯的字符串:
[zk: 202.115.36.251:2181(CONNECTED) 2] create /zk "myData“
3、 get
get命令來獲取節點信息
[zk: 202.115.36.251:2181(CONNECTED) 3] get /zk
備注:獲取數據時加上watch監聽這個節點的變化,當另外一個客戶端改變/zk時,它會打出下面的
[zk: localhost:2181(CONNECTED) 4] get /zk watch
#WATCHER::
#WatchedEvent state:SyncConnected type:NodeDataChanged path:/zk
4、 set
set命令來對 zk 所關聯的字符串進行設置:
[zk: 202.115.36.251:2181(CONNECTED) 4] set /zk "zsl“
5、delete
刪除 znode :
[zk: 202.115.36.251:2181(CONNECTED) 5] delete /zk
6、rmr
刪除節點:
[zk: 202.115.36.251:2181(CONNECTED) 5] rmr /zk
備注:rmr可刪除子節點,delete不可以
