zookeeper學習(2)--zookeeper原理介紹

1、zookeeper實現分佈式協同的原理
zookeeper採用共享存儲的方式,當主節點對某個從節點的任務分配信息作出改變時,從節點會得到zookeeper的通知,取得自己最新的任務分配,完成任務後將任務完成情況彙報給zookeeper,主節點訂閱了該任務的完成情況,將得到關於該任務完成的通知。

2、znode
zookeeper將任務分配,完成情況保存在每一個znode上,採用了類似文件系統的層級樹狀結構進行管理,
znode上存儲的數據爲字節數組,對存儲的數據格式沒有限制,也不會提供解析。
znode分爲臨時節點和持久化節點,持久節點只能通過delete刪除。臨時節點在創建該節點的客戶端崩潰或關閉時,自動被刪除。由於臨時znode會因爲創建者會話過期被刪除,所以不允許臨時節點擁有子節點。
另外znode可以被設置爲有序(sequential)節點。有序znode節點被分配唯一一個單調遞增的證書。如果創建了個一有序節點爲/workers/worker-,zookeeper會自動分配一個序號1,追加在名字後面,znode名稱爲/workers/worker-1。通過這種方式,可以創建唯一名稱znode,並且可以直觀的看到創建的順序。
每個znode都有版本號,隨着每次數據變化自增。setData和delete,以版本號作爲參數,當傳入的版本號和服務器上不一致時,調用失敗。當多個zookeeper客戶端同時對一個znode操作時,版本將會起到作用,假設c1,c2同時往一個znode寫數據,c1先寫完後版本從1升爲2,但是c2寫的時候攜帶版本號1,c2會寫入失敗。

3、觀察與通知
我們使用Zookeeper不能期望能夠監控到節點每次的變化,只能保證最終一致性,不能保證強一致性

4、運行模式:仲裁模式和獨立模式
仲裁模式下,法定人數》服務器數量的一半(多數原則),則集羣可用,服務器的數量最好選擇奇數,這樣集羣能容忍崩潰服務器佔比更大,性價比更高,例如6臺服務器,法定人數爲4,最多容忍2臺服務掛掉,7臺服務器,法定人數也爲4,最多能容忍3臺服務器掛掉。
5、會話與生命週期

會話超時時間爲t,客戶端發送請求,如何1/3t內收不到請求,則會向服務端發送心跳消息,2/3t後開始尋找其他服務器,最後的1/3t如果還沒有找到可用服務器,則該次會話失效。

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