分佈式服務框架 Zookeeper集羣

什麼是zookeeper

zookeeper是一個開源的分佈式協調服務。

zookeeper 的設計目標:簡單的數據模型、可構建集羣、順序訪問、高性能。

zookeeper的特點:順序一致性、原子性、單一系統映像、可靠性

 

ZooKeeper 集羣

集羣角色

主節點Leader
既可以爲客戶端提供寫服務又能提供讀服務,主節點跟蹤從節點狀態和任務的有效性,並分配任務到從節點。如果是寫請求,那麼節點就會向 Leader 提交事務,Leader 接收到事務提交,會廣播該事務。 只要超過半數節點寫入成功,該事務就會被提交。
從節點 Follower 
只能提供讀服務
觀察者Observer 
只能提供讀服務,不參與選舉,不參與“過半寫成功”策略

Leader選舉算法-ZAB 協議

1、每次投票會包含所推舉的服務器的myid和ZXID,然後各自將這個投票發給集羣中其他機器。
2、各服務器接收到投票之後會進行進行檢查,如檢查是否是本輪投票、是否來自LOOKING狀態的服務器。
3、規則是優先檢查ZXID。ZXID比較大的服務器優先作爲Leader。
4、如果ZXID相同,那麼就比較myid。myid較大的服務器作爲Leader服務器

 

zookeeper結構

zNode數據節點

Zookeeper將所有數據存儲在內存中,這也就保證了 高吞吐量和低延遲。數據模型是一棵節點樹,由斜槓(/)的進行分割的路徑,就是一個Znode。 每個節點保存自己的數據內容,同時還會保存一系列屬性信息

節點類型

持久節點:一旦這個ZNode被創建了,除非主動進行ZNode的移除操作,否則這個ZNode將一直保存在Zookeeper上
臨時節點 :生命週期和客戶端會話綁定,一旦客戶端會話失效,那麼這個客戶端創建的所有臨時節點都會被移除

 

zookeeper客戶端命令

#打開客戶端
zkCli.sh
zkCli.sh -server 127.0.0.1:2181,127.0.0.1:2182,127.0.0.01:2183

#查看znode節點
ls /

#創建znode節點
create /workers ""

#刪除節點
delete /workers

#退出
quit

#創建臨時節點
create -e /master "192.168.1.158:2223"

#獲取節點信息
get /master

#設置監視點 stat命令得到一個znode節點的屬性,並允許我們設置監視點
stat /master true

 

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