zookeeper 概述
zookeeper是一種分布式協調服務,用於管理大型主機。在分布式環境中協調和管理服務是乙個複雜的過程。zookeeper通過其簡單的架構和api解決了這個問題。zookeeper允許開發人員專注於核心應用程式邏輯,而不必擔心應用程式的分布式特性。
zookeeper框架最初是在「yahoo!"上構建的,用於以簡單而穩健的方式訪問他們的應用程式。後來,apache zookeeper成為hadoop,hbase和其他分布式框架使用的有組織服務的標準。例如,apache hbase使用zookeeper跟蹤分布式資料的狀態。
在進一步深入之前,我們了解關於分布式應用的一兩件事情是很重要的。因此,讓我們開始分布式應用的概述的快速討論。
分布式應用可以在給定時間(同時)在網路中的多個系統上執行,通過協調它們以快速有效的方式完成特定任務。通常來說,對於複雜而耗時的任務,非分布式應用(執行在單個系統中)需要幾個小時才能完成,而分布式應用通過使用所有系統涉及的計算能力可以在幾分鐘內完成。
通過將分布式應用配置為在更多系統上執行,可以進一步減少完成任務的時間。分布式應用正在執行的一組系統稱為集群,而在集群中執行的每台機器被稱為節點。
分布式應用有兩部分,server(伺服器)和client(客戶端)應用程式。伺服器應用程式實際上是分布式的,並具有通用介面,以便客戶端可以連線到集群中的任何伺服器並獲得相同的結果。客戶端應用程式是與分布式應用進行互動的工具。
可靠性- 單個或幾個系統的故障不會使整個系統出現故障。
可擴充套件性- 可以在需要時增加效能,通過新增更多機器,在應用程式配置中進行微小的更改,而不會有停機時間。
透明性- 隱藏系統的複雜性,並將其顯示為單個實體/應用程式。
競爭條件- 兩個或多個機器嘗試執行特定任務,實際上只需在任意給定時間由單個機器完成。例如,共享資源只能在任意給定時間由單個機器修改。
死鎖- 兩個或多個操作等待彼此無限期完成。
不一致- 資料的部分失敗。
apache zookeeper是由集群(節點組)使用的一種服務,用於在自身之間協調,並通過穩健的同步技術維護共享資料。zookeeper本身是乙個分布式應用程式,為寫入分布式應用程式提供服務。
zookeeper提供的常見服務如下 :
命名服務- 按名稱標識集群中的節點。它類似於dns,但僅對於節點。
配置管理- 加入節點的最近的和最新的系統配置資訊。
集群管理- 實時地在集群和節點狀態中加入/離開節點。
選舉演算法- 選舉乙個節點作為協調目的的leader。
鎖定和同步服務- 在修改資料的同時鎖定資料。此機制可幫助你在連線其他分布式應用程式(如apache hbase)時進行自動故障恢復。
高度可靠的資料登錄檔- 即使在乙個或幾個節點關閉時也可以獲得資料。
分布式應用程式提供了很多好處,但它們也丟擲了一些複雜和難以解決的挑戰。zookeeper框架提供了乙個完整的機制來克服所有的挑戰。競爭條件和死鎖使用故障安全同步方法進行處理。另乙個主要缺點是資料的不一致性,zookeeper使用原子性解析。
簡單的分布式協調過程
同步- 伺服器程序之間的相互排斥和協作。此過程有助於apache hbase進行配置管理。
有序的訊息
序列化- 根據特定規則對資料進行編碼。確保應用程式執行一致。這種方法可以在mapreduce中用來協調佇列以執行執行的執行緒。
可靠性
原子性- 資料轉移完全成功或完全失敗,但沒有事務是部分的。
分布式應用協調服務ZooKeeper
zookeeper是乙個開源的分布式的,為分布式應用提供協調服務的apache專案 zookeeper 檔案系統 通知機制 1 znode zookeeper資料模型的結構與linux檔案系統很像,整體上可以看作是一棵樹,樹的每個節點稱做乙個znode。每乙個znode預設能夠儲存1mb的資料,每個...
分布式系統協調zookeeper
zookeeper是hadoop的正式子專案,它是乙個針對大型分布式系統的可靠協調系統,提供的功能包括 配置維護 名字服務 分布式同步 組服務等。zookeeper的目標就是封裝好複雜易出錯的關鍵服務,將簡單易用的介面和效能高效 功能穩定的系統提供給使用者。zookeeper是google的chub...
分布式系統協調 ZooKeeper
zookeeper是hadoop的正式子專案,它是乙個針對大型分布式系統的可靠協調系統,提供的功能包括 配置維護 名字服務 分布式同步 組服務等。zookeeper的目標就是封裝好複雜易出錯的關鍵服務,將簡單易用的介面和效能高效 功能穩定的系統提供給使用者。zookeeper是google的chub...