1. ZooKeeper概述
Zookeeper是一個開源的分散式和諧效勞,它為分散式利用順序供給了一套簡單且高效的和諧介面。它的計劃目標是為了簡化分散式體系中罕見的任務,比方命名、設置管理、同步(包含鎖跟推舉)、構成員關係等。
1.1 什麼是Zookeeper
Zookeeper是一個分散式和諧效勞,由Apache Software Foundation開辟保護。它為分散式利用供給一致性效勞,包含設置管理、分散式鎖、集群管理等。
1.2 計劃目標
- 高可用性
- 高機能
- 嚴格的次序拜訪
- 數據的堅固性
2. ZooKeeper數據模型
Zookeeper的數據模型類似於文件體系,採用樹形構造。樹中的每個節點稱為Znode,它可能存儲數據,並且可能有子節點。
2.1 Znode範例
- 長久節點:一旦創建,除非主動刪除,不然會一直存在。
- 常設節點:與創建它的客戶端會話綁定,當客戶端會話掉效時,常設節點主動被刪除。
3. ZooKeeper任務道理
Zookeeper的核心是原子播送機制,這個機制保證了各個Server之間的同步。實現這個機制的協定叫做ZAB協定。
3.1 ZAB協定
ZAB協定有兩種形式,它們分辨是恢復形式(選主)跟播送形式(同步)。當效勞啟動或許在領導者毛病時,Zab就進入了恢復形式,當領導者被推舉出來,且大年夜少數Server實現了跟領導者的同步,Zab就進入了播送形式。
3.2 領導者推舉
Zookeeper集群中的節點須要選出一個領導者(Leader)。在集群啟動或許領導者毛病時,會觸發推舉過程。
4. ZooKeeper利用處景
Zookeeper因為其富強的和諧效勞特點,被廣泛利用於多種分散式體系的場景中,以下是一些罕見利用處景:
4.1 Leader推舉
在分散式體系中,和諧多個節點選出一個領導者是關鍵操縱,比方Hadoop HDFS利用Zookeeper停止Namenode的毛病轉移跟推舉。
4.2 分散式鎖
實現資本競爭的把持,Zookeeper供給了富強的分散式鎖功能。
4.3 設置管理
保持設置的一致性跟靜態更新,比方Apache Storm利用Zookeeper來和諧任務拓撲跟節點狀況。
4.4 效勞註冊與發明
Zookeeper常作為效勞註冊核心,容許效勞供給者註冊其效勞,花費者靜態發明效勞。
5. 總結
Zookeeper是分散式體系中弗成或缺的和諧利器,它經由過程供給簡單易用的編程介面,使得開辟人員可能輕鬆地實現分散式利用順序。懂得Zookeeper的道理跟利用處景對構建高堅固、高機能的分散式體系存在重要意思。