ZooKeeper 是 Apache 軟件基金會的一個軟件項目,它為大型分布式計算提供開源的分布式配置服務、同步服務和命名注冊。

ZooKeeper 的架構通過冗餘服務實現高可用性。

Zookeeper 的設計目標是將那些複雜且容易出錯的分布式一致性服務封裝起來,構成一個高效可靠的原語集,並以一係列簡單易用的接口提供給用戶使用。

一個典型的分布式數據一致性的解決方案,分布式應用程序可以基於它實現諸如數據發布/訂閱、負載均衡、命名服務、分布式協調/通知、集群管理、Master 選舉、分布式鎖和分布式隊列等功能。

誰適合閱讀本教程?

本教程是為專業的程序開發人員,通過本教程你可以一步一步了解 zookeeper 的應用。

zookeeper 數據結構

zookeeper 提供的名稱空間非常類似於標準文件係統,key-value 的形式存儲。名稱 key 由斜線 / 分割的一係列路徑元素,zookeeper 名稱空間中的每個節點都是由一個路徑標識。

相關 CAP 理論

CAP 理論指出對於一個分布式計算係統來說,不可能同時滿足以下三點:

  • 一致性:在分布式環境中,一致性是指數據在多個副本之間是否能夠保持一致的特性,等同於所有節點訪問同一份最新的數據副本。在一致性的需求下,當一個係統在數據一致的狀態下執行更新操作後,應該保證係統的數據仍然處於一致的狀態。
  • 可用性:每次請求都能獲取到正確的響應,但是不保證獲取的數據為最新數據。

  • 分區容錯性:分布式係統在遇到任何網絡分區故障的時候,仍然需要能夠保證對外提供滿足一致性和可用性的服務,除非是整個網絡環境都發生了故障。

一個分布式係統最多隻能同時滿足一致性(Consistency)、可用性(Availability)和分區容錯性(Partition tolerance)這三項中的兩項。

在這三個基本需求中,最多隻能同時滿足其中的兩項,P 是必須的,因此隻能在 CP 和 AP 中選擇,zookeeper 保證的是 CP,對比 spring cloud 係統中的注冊中心 eruka 實現的是 AP。

BASE 理論

BASE 是 Basically Available(基本可用)、Soft-state(軟狀態) 和 Eventually Consistent(最終一致性) 三個短語的縮寫。

  • 基本可用:在分布式係統出現故障,允許損失部分可用性(服務降級、頁麵降級)。

  • 軟狀態:允許分布式係統出現中間狀態。而且中間狀態不影響係統的可用性。這裏的中間狀態是指不同的 data replication(數據備份節點)之間的數據更新可以出現延時的最終一致性。

  • 最終一致性:data replications 經過一段時間達到一致性。

BASE 理論是對 CAP 中的一致性和可用性進行一個權衡的結果,理論的核心思想就是:我們無法做到強一致,但每個應用都可以根據自身的業務特點,采用適當的方式來使係統達到最終一致性。

相關資源

zookeeper 官網:https://zookeeper.apache.org/