Zookeeper簡介
Zookeeper是一個開源的,針對大型分佈式系統的可靠協調系統。提供的功能包括:發佈/訂閱、分佈式協調\通知、配置管理、集羣管理、主從協調、分佈式鎖等。
Zookeeper的特性
1、最終一致性
保證最終數據能夠達到一致,是zookeeper的最重要功能。
2、順序性
從同一客戶端發起的事務請求,最終會嚴格地按照其發送順序被應用到zookeeper中。
3、可靠性
一旦服務器成功的應用一個事務,並完成了客戶端的響應,那麼該事務所引起的服務端狀態變更將會被一直保留下去。
4、實時性
zookeeper不能保證兩個客戶端能同時得到剛更新的數據,如果需要最新數據,應該在讀數據之前調用sync()接口。
5、原子性
一次數據更新要麼成功,要麼失敗。
6、單一視圖
無論客戶端連接到哪個服務器,看到的數據模型都是一致的。
zookeeper角色
Leader:更新系統狀態,處理事務請求,負責進行投票的發起和決議。
Follower:處理客戶端非事務請求並向客戶端返回結果,將寫事務請求轉發給Leader,同步Leader的狀態,選主過程中參與投票。
Observer:接收客戶端讀請求,將客戶端寫請求轉發給Leader,不參與投票過程,只同步Leader的狀態。目的是爲了擴展系統,提高了讀取速度。
Client:請求發起方
zookeeper的寫入
1、數據寫入最終一致核心算法ZAB算法。
2、Leader負責處理寫事務請求。
3、Follower負責向Leader轉發寫請求,響應Leader發出的提議
zookeeper選舉
服務器四種狀態
LOOKING:尋找Leader狀態,處於該狀態需要進入選舉流程。
LEADING:領導者狀態,表明當前服務角色爲Leader
FOLLOWING:跟隨者狀態,Leader已經選舉出來,表明當前服務角色爲Follower
OBSERVER:觀察者狀態,表明當前服務角色Observer
事務ID:用ZXID表示,是一個64位的數字,由Leader統一分配,全局唯一,不斷遞增。
zookeeper選舉流程
一、全新啓動
1、每個Server發出一個投票,內容爲(myid,ZXID)
2、接收來自各個Server的投票
3、處理投票
4、統計投票
5、改變服務器狀態
二、運行期間
1、所有Server切換狀態爲LOOKING,每個Server發出一個投票,內容爲(myid,ZXID)
2、接收來自各個Server的投票。
3、處理投票
4、統計投票
5、改來服務器狀態
Znode節點類型
一、節點類型
持久節點(PERSISTENT)
臨時節點(EPHEMERAL)
順序節點(SEQUENTIAL)
二、組合節點類型
持久節點 (PERSISTENT)
持久順序節點 (PERSISTENT_SEQUENTIAL)
臨時節點 (EPHEMERAL)
臨時順序節點 (EPHEMERAL_SEQUENTIAL)