1. 程式人生 > >zookeeper初識

zookeeper初識

ZOOKEEPER是為分散式系統提供高效能的協調工具

角色:

1.領導者(leader):負責進行投票的發起和決議,更新系統狀態
2.學習者(learner):包括跟隨者(follower)和觀察者(observer),
  Follower用於接受客戶端請求並向客戶端返回結果(如果是事務請求,follower會將請求轉發給leader實施),在選主過程中參與投票
  Observer可以接受客戶端請求,將寫請求轉發給leader,但observer不參加投票過程,只同步leader的狀態,observer的目的是為了擴充套件系統,提高讀取速度。
3. 客戶端(client),請求發起方

 

資料節點型別:

PERSISTENT:永久節點
EPHEMERAL:臨時節點(為防止臨時節點的消亡影響子節點資料,臨時節點內不得建立子節點)
PERSISTENT_SEQUENTIAL:永久節點、序列化
EPHEMERAL_SEQUENTIAL:臨時節點、序列化

 

保證:

1.順序一致性:來自於客戶端的更新,根據傳送的先後被順序實施。
2.唯一的系統映像:儘管客戶端連線到不同的伺服器,但它們看到的一個唯一(一致性)的系統服務,client無論連線到哪個server,資料檢視都是一致的。
3.可靠性:一旦實施了一個更新,就會一直保持那種狀態,直到客戶端再次更新它,同時資料更新原子性,一次資料更新要麼成功,要麼失敗。


4.及時性:在一個確定的時間內,客戶端看到的系統狀態是最新的。

 

特性:

最終一致性:client不論連線到哪個Server,展示給它都是同一個檢視,這是zookeeper最重要的效能。
可靠性:具有簡單、健壯、良好的效能,如果訊息m被一臺伺服器接受,那麼它將被所有的伺服器接受。
實時性:Zookeeper保證客戶端將在一個時間間隔範圍內獲得伺服器的更新資訊,或者伺服器失效的資訊。 但由於網路延時等原因,Zookeeper不能保證兩個客戶端能同時得到剛更新的資料,如果需要最新資料,應該在讀資料之前呼叫sync()介面。
等待無關(wait-free):慢的或者失效的client,不得干預快速的client的請求,使得每個client都能有效的等待。


原子性:更新只能成功或者失敗,沒有中間狀態。
順序性:包括全域性有序和偏序兩種:

  全域性有序:是指如果在一臺伺服器上訊息a在訊息b前釋出,則在所有Server上訊息a都將在訊息b前被髮布;

  偏序:是指如果一個訊息b在訊息a後被同一個傳送者釋出,a必將排在b前面