天天看點

ZooKeeper基本介紹

Zookeeper 作為一個分布式的服務架構,主要用來解決分布式叢集中應用系統的一緻性問題,它能提供基于類似于檔案系統的目錄節點樹方式的資料存儲, Zookeeper 作用主要是用來維護和監控存儲的資料的狀态變化,通過監控這些資料狀态的變化,進而達到基于資料的叢集管理。

Zookeeper的角色

ZooKeeper基本介紹



Zookeeper的設計目的

1.最終一緻性:client不論連接配接到哪個Server,展示給它都是同一個視圖,這是zookeeper最重要的性能。

2 .可靠性:具有簡單、健壯、良好的性能,如果消息m被到一台伺服器接受,那麼它将被所有的伺服器接受。

3 .實時性:Zookeeper保證用戶端将在一個時間間隔範圍内獲得伺服器的更新資訊,或者伺服器失效的資訊。但由于網絡延時等原因,Zookeeper不能保證兩個用戶端能同時得到剛更新的資料,如果需要最新資料,應該在讀資料之前調用sync()接口。

4 .等待無關(wait-free):慢的或者失效的client不得幹預快速的client的請求,使得每個client都能有效的等待。

5.原子性:更新隻能成功或者失敗,沒有中間狀态。

6 .順序性:包括全局有序和偏序兩種:全局有序是指如果在一台伺服器上消息a在消息b前釋出,則在所有Server上消息a都将在消息b前被釋出;偏序是指如果一個消息b在消息a後被同一個發送者釋出,a必将排在b前面。

Leader主要功能:

Leader主要有三個功能:

1 .恢複資料;

2 .維持與Learner的心跳,接收Learner請求并判斷Learner的請求消息類型;

3 .Learner的消息類型主要有PING消息、REQUEST消息、ACK消息、REVALIDATE消息,根據不同的消息類型,進行不同的處理。

PING消息是指Learner的心跳資訊;REQUEST消息是Follower發送的提議資訊,包括寫請求及同步請求;ACK消息是Follower的對提議的回複,超過半數的Follower通過,則commit該提議;REVALIDATE消息是用來延長SESSION有效時間。



ZooKeeper基本介紹

### Follower基本功能

Follower主要有四個功能:

  1. 向Leader發送請求(PING消息、REQUEST消息、ACK消息、REVALIDATE消息);

    2 .接收Leader消息并進行處理;

    3 .接收Client的請求,如果為寫請求,發送給Leader進行投票;

    4 .傳回Client結果。

    Follower的消息循環處理如下幾種來自Leader的消息:

    1 .PING消息: 心跳消息;

    2 .PROPOSAL消息:Leader發起的提案,要求Follower投票;

    3 .COMMIT消息:伺服器端最新一次提案的資訊;

    4 .UPTODATE消息:表明同步完成;

    5 .REVALIDATE消息:根據Leader的REVALIDATE結果,關閉待revalidate的session還是允許其接受消息;

    6 .SYNC消息:傳回SYNC結果到用戶端,這個消息最初由用戶端發起,用來強制得到最新的更新。

    ZooKeeper基本介紹

繼續閱讀