Zookeeper - 概述



ZooKeeper 是一種分散式協調服務,用於管理大量主機。在分散式環境中協調和管理服務是一個複雜的過程。ZooKeeper 透過其簡單的架構和 API 解決此問題。ZooKeeper 允許開發人員專注於核心應用程式邏輯,而無需擔心應用程式的分散式特性。

ZooKeeper 框架最初是在“雅虎!”中構建的,用於以簡單而強大的方式訪問其應用程式。後來,Apache ZooKeeper 成為 Hadoop、HBase 和其他分散式框架使用的標準化服務。例如,Apache HBase 使用 ZooKeeper 來跟蹤分散式資料的狀態。

在繼續之前,瞭解一些有關分散式應用程式的資訊非常重要。因此,讓我們從分散式應用程式的快速概述開始討論。

分散式應用程式

分散式應用程式可以在網路中的多個系統上同時執行,並相互協調以快速有效地完成特定任務。通常,對於非分散式應用程式(在單個系統中執行)可能需要數小時才能完成的複雜且耗時的任務,可以透過分散式應用程式在幾分鐘內完成,因為它利用了所有涉及的系統的計算能力。

透過將分散式應用程式配置為在更多系統上執行,可以進一步縮短完成任務的時間。執行分散式應用程式的一組系統稱為叢集,叢集中執行的每臺機器稱為節點

分散式應用程式有兩個部分:伺服器客戶端應用程式。伺服器應用程式實際上是分散式的,並且具有公共介面,以便客戶端可以連線到叢集中的任何伺服器並獲得相同的結果。客戶端應用程式是與分散式應用程式互動的工具。

Distributed Application

分散式應用程式的優勢

  • 可靠性 - 單個或幾個系統的故障不會導致整個系統故障。

  • 可擴充套件性 - 可以根據需要透過新增更多機器來提高效能,只需對應用程式配置進行少量更改即可,並且不會出現停機時間。

  • 透明性 - 隱藏系統的複雜性,並將其顯示為單個實體/應用程式。

分散式應用程式的挑戰

  • 競爭條件 - 兩臺或多臺機器嘗試執行特定任務,而該任務實際上在任何給定時間只需要由一臺機器執行。例如,共享資源在任何給定時間只能由一臺機器修改。

  • 死鎖 - 兩個或多個操作無限期地等待彼此完成。

  • 不一致性 - 資料的部分故障。

Apache ZooKeeper 的用途是什麼?

Apache ZooKeeper 是一種由叢集(節點組)使用的服務,用於在其之間進行協調並使用強大的同步技術維護共享資料。ZooKeeper 本身是一個分散式應用程式,提供用於編寫分散式應用程式的服務。

ZooKeeper 提供的常見服務如下:

  • 命名服務 - 透過名稱識別叢集中的節點。它類似於 DNS,但適用於節點。

  • 配置管理 - 用於加入節點的系統最新和最新的配置資訊。

  • 叢集管理 - 節點在叢集中加入/離開以及節點的即時狀態。

  • 主選舉 - 選擇一個節點作為協調目的的主節點。

  • 鎖定和同步服務 - 在修改資料時鎖定資料。此機制有助於在連線其他分散式應用程式(如 Apache HBase)時自動故障恢復。

  • 高度可靠的資料登錄檔 - 即使一個或幾個節點出現故障,也能保證資料的可用性。

分散式應用程式提供了許多好處,但它們也帶來了一些複雜且難以解決的挑戰。ZooKeeper 框架提供了一種完整的機制來克服所有這些挑戰。競爭條件和死鎖是使用故障安全同步方法處理的。另一個主要缺點是資料不一致,ZooKeeper 透過原子性解決了這個問題。

ZooKeeper 的優勢

以下是使用 ZooKeeper 的優勢:

  • 簡單的分散式協調過程

  • 同步 - 伺服器程序之間的互斥和協作。此過程有助於 Apache HBase 進行配置管理。

  • 有序訊息

  • 序列化 - 根據特定規則對資料進行編碼。確保您的應用程式一致執行。此方法可用於 MapReduce 協調佇列以執行正在執行的執行緒。

  • 可靠性

  • 原子性 - 資料傳輸要麼完全成功,要麼完全失敗,但沒有部分事務。

廣告

© . All rights reserved.