- Zookeeper 教程
- Zookeeper – 首頁
- Zookeeper – 概述
- Zookeeper - 基礎知識
- Zookeeper – 工作流程
- Zookeeper – 主選舉
- Zookeeper – 安裝
- Zookeeper – 命令列介面
- Zookeeper – API
- Zookeeper – 應用
- Zookeeper 有用資源
- Zookeeper – 快速指南
- Zookeeper – 有用資源
- Zookeeper – 討論
Zookeeper - 概述
ZooKeeper 是一種分散式協調服務,用於管理大量主機。在分散式環境中協調和管理服務是一個複雜的過程。ZooKeeper 透過其簡單的架構和 API 解決此問題。ZooKeeper 允許開發人員專注於核心應用程式邏輯,而無需擔心應用程式的分散式特性。
ZooKeeper 框架最初是在“雅虎!”中構建的,用於以簡單而強大的方式訪問其應用程式。後來,Apache ZooKeeper 成為 Hadoop、HBase 和其他分散式框架使用的標準化服務。例如,Apache HBase 使用 ZooKeeper 來跟蹤分散式資料的狀態。
在繼續之前,瞭解一些有關分散式應用程式的資訊非常重要。因此,讓我們從分散式應用程式的快速概述開始討論。
分散式應用程式
分散式應用程式可以在網路中的多個系統上同時執行,並相互協調以快速有效地完成特定任務。通常,對於非分散式應用程式(在單個系統中執行)可能需要數小時才能完成的複雜且耗時的任務,可以透過分散式應用程式在幾分鐘內完成,因為它利用了所有涉及的系統的計算能力。
透過將分散式應用程式配置為在更多系統上執行,可以進一步縮短完成任務的時間。執行分散式應用程式的一組系統稱為叢集,叢集中執行的每臺機器稱為節點。
分散式應用程式有兩個部分:伺服器和客戶端應用程式。伺服器應用程式實際上是分散式的,並且具有公共介面,以便客戶端可以連線到叢集中的任何伺服器並獲得相同的結果。客戶端應用程式是與分散式應用程式互動的工具。
分散式應用程式的優勢
可靠性 - 單個或幾個系統的故障不會導致整個系統故障。
可擴充套件性 - 可以根據需要透過新增更多機器來提高效能,只需對應用程式配置進行少量更改即可,並且不會出現停機時間。
透明性 - 隱藏系統的複雜性,並將其顯示為單個實體/應用程式。
分散式應用程式的挑戰
競爭條件 - 兩臺或多臺機器嘗試執行特定任務,而該任務實際上在任何給定時間只需要由一臺機器執行。例如,共享資源在任何給定時間只能由一臺機器修改。
死鎖 - 兩個或多個操作無限期地等待彼此完成。
不一致性 - 資料的部分故障。
Apache ZooKeeper 的用途是什麼?
Apache ZooKeeper 是一種由叢集(節點組)使用的服務,用於在其之間進行協調並使用強大的同步技術維護共享資料。ZooKeeper 本身是一個分散式應用程式,提供用於編寫分散式應用程式的服務。
ZooKeeper 提供的常見服務如下:
命名服務 - 透過名稱識別叢集中的節點。它類似於 DNS,但適用於節點。
配置管理 - 用於加入節點的系統最新和最新的配置資訊。
叢集管理 - 節點在叢集中加入/離開以及節點的即時狀態。
主選舉 - 選擇一個節點作為協調目的的主節點。
鎖定和同步服務 - 在修改資料時鎖定資料。此機制有助於在連線其他分散式應用程式(如 Apache HBase)時自動故障恢復。
高度可靠的資料登錄檔 - 即使一個或幾個節點出現故障,也能保證資料的可用性。
分散式應用程式提供了許多好處,但它們也帶來了一些複雜且難以解決的挑戰。ZooKeeper 框架提供了一種完整的機制來克服所有這些挑戰。競爭條件和死鎖是使用故障安全同步方法處理的。另一個主要缺點是資料不一致,ZooKeeper 透過原子性解決了這個問題。
ZooKeeper 的優勢
以下是使用 ZooKeeper 的優勢:
簡單的分散式協調過程
同步 - 伺服器程序之間的互斥和協作。此過程有助於 Apache HBase 進行配置管理。
有序訊息
序列化 - 根據特定規則對資料進行編碼。確保您的應用程式一致執行。此方法可用於 MapReduce 協調佇列以執行正在執行的執行緒。
可靠性
原子性 - 資料傳輸要麼完全成功,要麼完全失敗,但沒有部分事務。