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的協調佇列以執行正在執行的執行緒。

  • 可靠性

  • 原子性 ? 資料傳輸成功或完全失敗,但沒有事務處理部分。