Zookeeper
ZooKeeper是一個分布式、高可用性的協調服務。ZooKeeper提供分布式配置服務、同步服務和命名注冊等功能。
基本原理
一個ZooKeeper集群需要由奇數個(2N+1)節點構成,通過內部選舉協議選出一個Leader節點,其余為Follower節點。寫入數據時,由Leader節點負責統一協調寫請求,至少(N+1)個節點投票成功才能確定本次數據寫入成功,因此至少有(N+1)個存活的節點才能保證ZooKeeper整體服務可用。當Leader節點異常退出時,ZooKeeper集群會重新發起選舉,選出新的Leader節點,保證整體服務的高可用。
數據組織
ZooKeeper的數據組織方式與標準文件系統類似,組織成類似文件樹的結構,在ZooKeeper中使用znode(ZooKeeper node)來描述文件,與標準文件系統不同的是,znode并不區分目錄或者文件的概念,每個znode都可以存儲數據。
ZooKeeper作為一個協調服務,znode主要用來存儲協調性數據,例如,服務狀態信息和配置信息等,不應把ZooKeeper作為文件系統來存儲大量數據。