zookeeper基礎知識
1.單個zookeeper結構
zookeeper結構圖
zookeeper的數據模型很像樹。
- 每個節點都爲znode
- znode分爲持久節點(客戶端斷開連接後,仍然存在),臨時節點(斷開連接,節點消失,不允許有子節點),順序節點(持久或臨時,編號用於鎖定和同步中)
- 每個znode維護一個stat(由版本號,操作控制列表,時間戳,數據長度組成)
znode詳解
2.zookeeper集羣結構
zookeeper集羣結構
1、client
分佈式中的一個節點,訪問服務器的配置信息,週期性向server發送心跳包,server向client迴應確認,如果client沒有收到迴應,則重定向到另一個server
2、server
zookeeper中的一個節點,爲client提供所需的服務,給client迴應信息表明自己是存活的
3、leader
連接任何一個節點,如果節點出現故障,leader自動修復,在service啓動時完成leader的選舉
4、follower
聽從leader的指令,完成選舉工作
2.1Leader主要有三個功能:
- 恢復數據;
- 維持與follower的心跳,接收follower請求並判斷follower的請求消息類型;
- follower的消息類型主要有PING消息、REQUEST消息、ACK消息、REVALIDATE消息,根據不同的消息類型,進行不同的處理。
zookeeper基礎使用
#創建節點
create [-s] [-e] path data acl
-s:創建節點順序累加,-e創建臨時節點,path:路徑,data:數據,acl:權限控制
#新增(修改)數據
set path data [version]
#刪除數據
delete path [version]
#獲取數據
ls path [watch] 獲取子節點
get path [watch] 獲取節點信息
ls2 path [watch] 爲上面兩個命令的結合