ZooKeeper是一個分布式、高可用性的協調服務。ZooKeeper提供分布式配置服務、同步服務和命名注冊等功能。

基本原理

一個ZooKeeper集群需要由奇數個(2N+1)節(jié)點構成,通過內部選舉協議選出一個Leader節(jié)點,其余為Follower節(jié)點。寫入數據時,由Leader節(jié)點負責統一協調寫請求,至少(N+1)個節(jié)點投票成功才能確定本次數據寫入成功,因此至少有(N+1)個存活的節(jié)點才能保證ZooKeeper整體服務可用。當Leader節(jié)點異常退出時,ZooKeeper集群會重新發(fā)起選舉,選出新的Leader節(jié)點,保證整體服務的高可用。

數據組織

ZooKeeper的數據組織方式與標準文件系統類似,組織成類似文件樹的結構,在ZooKeeper中使用znode(ZooKeeper node)來描述文件,與標準文件系統不同的是,znode并不區(qū)分目錄或者文件的概念,每個znode都可以存儲數據。Zookeeper

ZooKeeper作為一個協調服務,znode主要用來存儲協調性數據,例如,服務狀態(tài)信息和配置信息等,不應把ZooKeeper作為文件系統來存儲大量數據。