簡介(what):
提供配置管理,名字服務,提供分佈式同步以及集羣管理的中心化服務解決方案
數據結構:樹形結構
四種節點: 持久節點 持久順序節點 臨時節點 臨時順序節點
持久節點: 創建節點的客戶端和zookeeper斷開連接後 節點仍然存在
臨時節點:創建節點的客戶端和zookeeper斷開連接後 節點刪除
順序:創建時根據創建時間給該節點名稱進行編號
原理:
首先在zookeeper 中創建一個持久節點 ParentLock。客戶client1請求時(想得到鎖)
在ParentLock下創建一個臨時順序節點Lock1
client1 查找所有ParentLock下面的臨時順序節點並排序
判斷是不是順序最靠前的一個臨時節點 如果是成功獲取鎖
此時 client2 來獲取鎖 在ParentLock下創建一個臨時順序節點Lock2
client2 查找所有ParentLock下面的臨時順序節點並排序
判斷自己是不是最靠前 不是
向它的上一個節點Lock1註冊Watcher,用於監聽Lock1節點是否存在。
client2 搶鎖失敗 進入等待狀態
同理 client3 向cleint2註冊一個Watcher用於監聽Lock2節點是否存在。
client3 搶鎖失敗 進入等待狀態
這樣client2監聽client1 client3監聽client2 形成一個等待隊列
釋放鎖:
1.1 任務完成 客戶端釋放鎖
client1 顯示調用刪除節點Lock1的指令
1.2 任務執行中 客戶端崩潰
客戶端斷開與Zookeeper連接 相關聯的節點Lock1 會隨之自動刪除
由於client2監聽Lock1的存在狀態,Lock1 被刪除 client2立刻收到
管理界面:
安裝zkui,可以參考zkui的項目地址來安裝,它提供了一個管理界面,可以針對zookeepr的節點值進行CRUD操作,同時也提供了安全認證