Zookeeper 分佈式服務框架是Apache Hadoop 的一個子項目,它主要是用來解決分佈式應用中常常遇到的一些數據管理問題,如:統一命名服務、狀態同步服務、集羣管理、分佈式應用配置項的管理等。node
Zookeeper分紅客戶端和服務端兩部分,服務端一般運行於集羣模式,統一爲客戶端提供分佈式數據一致性管理服務,集羣可提供水平擴展能力,以及避免單點故障。服務器
ZooKeeper讓分佈式進程可經過共享的、與標準文件系統相似的分層名字空間相互協調。名字空間由數據寄存器(在ZooKeeper世界中稱做znode)構成,這與文件和目錄相似。與用於存儲設備的典型文件系統不一樣的是,ZooKeeper的數據每每常駐內存提供服務,提升性能。框架
Zookeeper還提供了數據動態監測機制, 客戶端註冊監聽它關心的目錄節點,當目錄節點發生變化(數據改變、被刪除、子目錄節點增長刪除)時,客戶端會觸發註冊事件。 分佈式
ZooKeeper的實現很重視高性能、高可用性,以及嚴格的順序訪問。高性能意味着可將ZooKeeper用於大的分佈式系統。可靠性使之可避免單點失敗。嚴格的順序訪問使得客戶端能夠實現複雜的同步原語。oop
服務端一般有多臺服務器,這些服務器都經過QuorumPeer進程維持分佈式系統間的數據交換,選舉領導者(Leader)和追隨者(Follower),動態監控集羣,一旦發生節點故障則從新啓動選舉流程,選出新的Leader。每一個服務器維護相同的一份全局數據,經過QuorumPeer維持數據之間的同步,這樣提供高可靠性和橫向擴展性。性能
本節從Zookeeper客戶端的角色出發,理解Zookeeper的經常使用操做方法。spa
客戶端提供的操做包括啓動、關閉、建立節點、設置節點數據、刪除節點、獲取節點、獲取節點數據等。這裏只是取其中的幾個命令作爲示例。命令行
zkCli.sh進程
Connect 10.10.27.21事件
建立一個新的 znode ,使用 create /test 「hello」 。這個命令在根目錄下建立了一個新的 znode 節點「 test 」以及與它關聯的字符串:
使用 ls 命令來查看當前 ZooKeeper 中所包含的內容,這裏顯示/目錄下有test、zookeeper兩個子節點。
運行 get 命令來確認第二步中所建立的 znode ,顯示znode的數據、建立時間等狀態信息。
示例數據:
經過 set 命令來對 zk 所關聯的字符串進行設置,設置/test路徑的數據爲「welcome!」。
delete /test