ZooKeeper-簡介
關於ZooKeeper
ZooKeeper是Hadoop的分布式協調服務。
寫分布式應用的主要困難在於會出現“部分失敗”(partial failure)。當一條消息在網絡中兩個節點之間傳送時,如果出現網絡錯誤,發送者無法知道接收者是否已經收到這條消息。接收者可能在出現網絡錯誤之前就已經收到這條消息,也有可能沒有收到,又或者接收者的進程已經死掉。發送者能夠獲得真實情況的唯一途徑就是重新連接接收者,並向它發出詢問。這種情況就是部分失敗,即我們不知道一個操作是否已經失敗。
由於部分失敗是分布式系統固有的特征,因此使用zookeeper並不能避免出現部分失敗,當然它也不會隱藏部分失敗。Zookeeper可以提供一組工具,在構建分布式應用時能夠對部分失敗進行正確處理。
ZooKeeper具有以下特點
1.ZooKeeper是簡單的:ZooKeeper的核心是一個精簡的文件系統,它提供一些簡單的操作和一些額外的抽象操作,例如,排序和通知。
2.ZooKeeper是富有表現力的:ZooKeeper的基本操作是一組豐富的構件(building block),可用於實現多種協調數據結構和協議。相關的例子包括:分布式隊列、分布式鎖和一組節點中的“領導者選舉”(leader election)。
3.ZooKeeper具有高可用性:ZooKeeper運行於一組機器之上,並且在設計上具有高可用性,因此應用程序完全可以依賴於它。ZooKeeper可以幫助系統避免出現單點故障,因此可以用於構建一個可靠的應用程序。
4.ZooKeeper采用松耦合交互方式:在ZooKeeper支持的交互過程中,參與者不需要彼此了解。例如,ZooKeeper可以被用於實現“數據匯集”(rendezvous)機制,讓進程在不了解其他進程(或網絡狀況)的情況下能夠彼此發現並進行信息交互。參與的各方甚至可以不必同時存在,因為一個進程可以在ZooKeeper中留下一條信息,在改進程結束後,另外一個進程還可以讀取這條消息。
5.ZooKeeper是一個資源庫:ZooKeeper提供了一個通用協調模式實現方法的開源共享庫,使程序員免於編寫這類通用的協議。所有人都能夠對這個資源庫進行添加和改進,久而久之,會使每個人都從中受益。
同時,ZooKeeper也是高性能的。對於以寫操作為主的工作負載來說,ZooKeeper的基準吞吐量已經超過每秒10000個操作;對於常規的以讀操作為主的工作負載來說,吞吐量更是高出好幾倍。
ZooKeeper-簡介