天天看點

zookeeper 學習筆記

zookeeper 簡單說 就是 一句原語   團結和睦一直對外

通過一個hadoop的namenode的HA例子引入,上小圖

zookeeper 學習筆記

zookeeper     1注冊  2監聽事件  3 回調函數

值得注意的是回調函數是 zkfc自己的,是zkfc當初注冊在zk cluster上的

zookeeper 學習筆記

client用戶端發出一個請求給其中一個follower,follower沒有權限處理,再彙報給leader,leader收到半數之上的同意後,正式通過請求,leader向所有follower釋出,開始執行生效。其他client請求資訊,follower會和leader做下sync,然後把結果傳回給client。leader通過消息隊列的方式確定所有follower都知道有一個事物生效了。每一個follower有一個自己的消息隊列。最終一緻。

選leader的過程

每個server都會有個 server_id(my_id)和zxid.

事務zxid優先級高于s_id.

傳遞性

過半機制

角色模型

叢集狀态

選舉模式  安其内

廣播模式  壤其外

Server狀态

LOOKING:目前Server不知道leader是誰,正在搜尋

LEADING:目前Server即為選舉出來的leader

FOLLOWING:leader已經選舉出來,目前Server與之同步

主從分工

上司者(leader)

負責進行投票的發起和決議,更新系統狀态

學習者(learner)

包括跟随者(follower)和觀察者(observer),follower用于接受用戶端請求并向用戶端傳回結果,在選主過程中參與投票

Observer

可以接受用戶端連接配接,将寫請求轉發給  leader,但observer不參加投票過程,隻同步leader  的狀态,observer的目的是為了擴充系統,提高讀取  速度

用戶端(client)

請求發起方

zookeeper 學習筆記

會話session

用戶端與叢集節點建立TCP連接配接後獲得一個session

如果連接配接的Server出現問題,在沒有超過Timeout時間時,可以連接配接其他節點

同一session期内的特性不變

Session是由誰來建立的?

Leader:産生一個唯一的session,放到消息隊列,讓所有server知道

(過半)

繼續閱讀