Zookeeper基礎總結

Zookeeper的數據結構

樹型結構,類似於文件目錄.

Zookeeper的節點類型

臨時節點,臨時帶編號節點,持久節點,持久帶編號節點.

臨時節點下不允許創建子節點.

Zookeeper角色

Leader,Follower.

Zookeeper的工作原理

服務提供者啓動時,會將其服務名稱,ip地址註冊到配置中心。
服務消費者在第一次調用服務時,會通過註冊中心找到相應的服務的IP地址列表,並緩存到本地,以供後續使用。當消費者調用服務時,不會再去請求註冊中心,而是直接通過負載均衡算法從IP列表中取一個服務提供者的服務器調用服務。
當服務提供者的某臺服務器宕機或下線時,相應的ip會從服務提供者IP列表中移除。同時,註冊中心會將新的服務IP地址列表發送給服務消費者機器,緩存在消費者本機。
當某個服務的所有服務器都下線了,那麼這個服務也就下線了。
同樣,當服務提供者的某臺服務器上線時,註冊中心會將新的服務IP地址列表發送給服務消費者機器,緩存在消費者本機。
服務提供方可以根據服務消費者的數量來作爲服務下線的依據.

Zookeeper心跳檢測機制

zookeeper提供了“心跳檢測”功能,它會定時向各個服務提供者發送一個請求(實際上建立的是一個 socket 長連接),如果長期沒有響應,服務中心就認爲該服務提供者已經“掛了”,並將其剔除.

服務消費者會去監聽相應路徑,一旦路徑有變化(增加或減少),zookeeper都會通知服務消費方服務提供者地址列表已經發生改變,從而進行更新

Zookeeper的選舉機制

投票過半數則選舉Leader成功,依據id進行投票,優先投給當前節點中id大的.選舉成功後,後續來的節點,無論多大,都是Follower.

Zookeeper的監聽原理

ZK客戶端,會創建connet網絡通信連接,listener監聽線程.

通過connect連接將註冊的監聽事件發送給Zookeeper服務端.

服務端將監聽事件添加到註冊監聽器列表,開始監聽,監聽到有數據或路徑變化.將消息發送給listener.

listener調用process方法.

Zookeeper的常用命令

create /zk myData

get /zk [watch]

set /zk newDate

delete /zk

ls /zk [watch]

stat /zk [watch]

Zookeeper與分佈式鎖

使用zookeeper創建臨時序列節點來實現分佈式鎖,適用於順序執行的程序,大體思路就是創建臨時序列節點,找出最小的序列節點,獲取分佈式鎖,程序執行完成之後此序列節點消失,通過watch來監控節點的變化,從剩下的節點的找到最小的序列節點,獲取分佈式鎖,執行相應處理,依次類推……

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