zookeeper 分佈式鎖原理

簡介(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操作,同時也提供了安全認證

dubbo: https://www.cnblogs.com/lilixin/p/5724976.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章