Zookeeper特點及理解

2021-09-27 00:26:36 字數 2174 閱讀 1932

zookeeper 特點

順序一致性:從同一客戶端發起的事務請求,最終將會嚴格地按照順序被應用到 zookeeper 中去。

原子性:所有事務請求的處理結果在整個集群中所有機器上的應用情況是一致的,也就是說,要麼整個集群中所有的機器都成功應用了某乙個事務,要麼都沒有應用。

單一系統映像 :無論客戶端連到哪乙個 zookeeper 伺服器上,其看到的服務端資料模型都是一致的。

zookeeper工作原理

zookeeper的核心是原子廣播,這個機制保證了各個server之前的同步。實現這個機制的協議叫做zab協議,zab協議有兩種模式:

**它們分別是恢復模式(選主)和廣播模式(同步)。**當服務啟動或者在領導者崩潰後,zab就進入了恢復模式,當領導者被選舉出來,且大多數server完成了和leader的狀態同步以後,恢復模式就結束了,狀態同步保證了leader和server具有相同的系統狀態。

為了保證事務的順序一致性,zookeeper採用了遞增的事務id號(zxid)來標識事務。

zookeeper 設計目標

簡單的資料模型

zookeeper 允許分布式程序通過共享的層次結構命名空間進行相互協調,這與標準檔案系統類似。 命名空間由 zookeeper 中的資料暫存器組成 - 稱為znode,這些類似於檔案和目錄。與為儲存設計的典型檔案系統不同,zookeeper資料儲存在記憶體中,這意味著zookeeper可以實現高吞吐量和低延遲。

可構建集群

為了保證高可用,最好是以集群形態來部署 zookeeper,這樣只要集群中大部分機器是可用的(能夠容忍一定的機器故障),那麼zookeeper本身仍然是可用的。 客戶端在使用 zookeeper 時,需要知道集群機器列表,通過與集群中的某一台機器建立 tcp 連線來使用服務,客戶端使用這個tcp鏈結來傳送請求、獲取結果、獲取監聽事件以及傳送心跳包。如果這個連線異常斷開了,客戶端可以連線到另外的機器上。

zookeeper 官方提供的架構圖:

上圖中每乙個server代表乙個安裝zookeeper服務的伺服器。組成 zookeeper 服務的伺服器都會在記憶體中維護當前的伺服器狀態,並且每台伺服器之間都互相保持著通訊。集群間通過 zab 協議(zookeeper atomic broadcast)來保持資料的一致性。

順序訪問

對於來自客戶端的每個更新請求,zookeeper 都會分配乙個全域性唯一的遞增編號,這個編號反應了所有事務操作的先後順序,應用程式可以使用 zookeeper 這個特性來實現更高層次的同步原語。 這個編號也叫做時間戳——zxid(zookeeper transaction id)

高效能

zookeeper 是高效能的。 在「讀」多於「寫」的應用程式中尤其地高效能,因為「寫」會導致所有的伺服器間同步狀態。(「讀」多於「寫」是協調服務的典型場景。)

其他

最終一致性:client不論連線到哪個server,展示給它都是同乙個檢視,這是zookeeper最重要的效能。

可靠性:具有簡單、健壯、良好的效能,如果訊息被推送到一台伺服器接收,那麼它將被所有的伺服器接收。

實時性:zookeeper保證客戶端將在乙個時間間隔範圍內獲得伺服器的更新資訊,或者伺服器失效的資訊,但由於網路延時等原因,zookeeper不能保證兩個客戶端能同時得到剛更新的資料,如果需要最新資料,應該在讀資料之前呼叫sync介面。

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

原子性:更新只能成功或者失敗,沒有中間狀態。

順序性:包括全域性有序和偏序兩種,全域性有序是指如果在一台伺服器上訊息a在訊息b之前發布,則所有的server上訊息a都將訊息b之前發布;偏序是指如果乙個訊息b在訊息a後被同乙個傳送者發布,a必將排在b前面

zookeeper 資料儲存特點

zookeeper 和elasticseaarch 資料儲存特點 1.zookeeper zookeeper提供的一致性是弱一致性,首先資料的複製有如下規則 zookeeper確保對znode樹的每乙個修改都會被複製到集合體中超過半數的機器上。那麼就有可能有節點的資料不是最新的而被客戶端訪問到。並且...

Eureka的理解及與Zookeeper的區別

eureka介紹 eureka是netflix的乙個子模組,也是核心模組之一。eureka是乙個基於rest的服務,用於定位服務,以實現雲端中間層服務發現和故障轉移,服務註冊與發現對於微服務來說是非常重要的,有了服務發現與註冊,只需要使用服務的識別符號,就可以訪問到服務,而不需要修改服務呼叫的配置檔...

ZooKeeper 簡單理解

zookeeper 概覽 zookeeper 是乙個開源的分布式協調服務,zookeeper 框架最初是在 yahoo 上構建的,用於以簡單而穩健的方式訪問他們的應用程式。zookeeper 是乙個典型的分布式資料一致性解決方案,分布式應用程式可以基於 zookeeper 實現諸如資料發布 訂閱 負...