ZooKeeper是一個典型的分佈式數據一致性的解決方案,分佈式應用程序能夠基於它實現數據發佈/訂閱、負載均衡、命名服務、分佈式協調/通知、集羣管理、Master選舉、分佈式鎖和分佈式隊列等功能。node
從同一個客戶端發起的事務請求,最終將會嚴格地按照其發起順序被應用到ZooKeeper中去服務器
全部事務請求的處理結果在整個集羣中全部機器上的應用狀況是一致的,要麼都成功,要麼都不成功數據結構
不管客戶端鏈接的是哪個ZooKeeper服務器,其看到的服務端數據模型都是一致的負載均衡
一旦服務端成功地應用了一個事務,並完成對客戶端的響應,那麼該事務所引發的服務端狀態變動將會被一致保留下來,除非有領一個事務又對其進行了變動分佈式
一般人們看到的實時性是,一旦一個事務被成功應用,那麼客戶端可以當即從服務端上讀取到這個事務變動後的最新數據狀態。可是Zookeeper僅僅保證在必定的時間段內,客戶端最終必定可以從服務端上讀取到最新的數據狀態。性能
致力於提供一個高性能、高可用,且具備嚴格的順序訪問控制能力的分佈式協調服務。設計
Leader,Follower,Observer
Leader提供讀寫服務,由過半服務選舉出來
Follower,Observer都能共提供讀服務,惟一的區別自安於,Observer不參與Leader選舉過程,也不參與寫操做的「過半寫成功」策略。server
ZooKeeper的每一個ZNode上都會存儲數據,對應於每一個ZNode,Zookeeper都會爲其維護一個叫作Stat的數據結構,Stat中記錄了這個ZNode的三個數據版本。分別是version(當前版本),cversion(當前子節點的版本)和aversion(當前ACL版本)隊列
權限控制策略,create,read,write,delete,admin事務
最成熟的,開源的,免費的,普遍應用。