Zookeeper之工作原理

2021-06-05 15:26:50 字數 1210 閱讀 9784

zookeeper是乙個分布式的,開放原始碼的分布式應用程式協調服務,它包含乙個簡單的原語集,分布式應用程式可以基於它實現同步服務,配置維護和命名服務等。zookeeper是hadoop的乙個子專案,其發展歷程無需贅述。在分布式應用中,由於工程師不能很好地使用鎖機制,以及基於訊息的協調機制不適合在某些應用中使用,因此需要有一種可靠的、可擴充套件的、分布式的、可配置的協調機制來統一系統的狀態。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前面。

zookeeper的核心是原子廣播,這個機制保證了各個server之間的同步。實現這個機制的協議叫做zab協議。zab協議有兩種模式,它們分別是恢復模式(選主)和廣播模式(同步)。當服務啟動或者在領導者崩潰後,zab就進入了恢復模式,當領導者被選舉出來,且大多數server完成了和leader的狀態同步以後,恢復模式就結束了。狀態同步保證了leader和server具有相同的系統狀態。

為了保證事務的順序一致性,zookeeper採用了遞增的事務id號(zxid)來標識事務。所有的提議(proposal)都在被提出的時候加上了zxid。實現中zxid是乙個64位的數字,它高32位是epoch用來標識leader關係是否改變,每次乙個leader被選出來,它都會有乙個新的epoch,標識當前屬於那個leader的統治時期。低32位用於遞增計數。

每個server在工作過程中有三種狀態:

ZooKeeper的工作原理

zookeeper是乙個分布式的,開放原始碼的分布式應用程式協調服務,它包含乙個簡單的原語集,分布式式應用程式可以基於它實現同步服務,配置維護和命名服務等。zookeeper是hadoop的乙個子專案。在分布式應用中,由於工程師不能很好的使用鎖機制,以及基於訊息的協調機制不適合在某些應用中使用,因此...

zookeeper的工作原理

zookeeper的核心是原子廣播,這個機制保證了各個server之間的同步。實現這個機制的協議叫做zab協議。zab協議有兩種模式,它們分別是恢復模式和廣播模式。當服務啟動或者在領導者崩潰後,zab就進入了恢復模式,當領導者被選舉出來,且大多數server的完成了和leader的狀態同步以後,恢復...

Zookeeper的工作原理

zookeeper使用了zab zookeeper atomic broadcast 協議,進行了訊息廣播,崩潰恢復,資料同步 基於該協議,zookeeper 實現了一種主備模式的系統架構來保持集群中各個副本之間的資料一致性,同時其崩潰恢復過程也確保zk集群的高可用性,所以leader是主,foll...