
上QQ阅读APP看书,第一时间看更新
*2.4 Zookeeper
Zookeeper是一个集群管理工具,提供配置维护、域名服务、分布式同步、组服务等,是Google的Chubby一个开源的实现。其功能如图2.11所示。

图2.11 Zookeeper功能
1.Zookeeper体系架构
图2.12显示了Zookeeper体系架构。
Leader接收所有Follower的提案请求并统一协调发起提案的投票,负责与所有的Follower进行内部的数据交换(同步)。
Follower直接为客户端服务并参与提案的投票,同时与Leader进行数据交换(同步)。
Observer直接为客户端服务但并不参与提案的投票,同时也与Leader进行数据交换(同步)(默认关闭)。
2.Zookeeper工作原理
Zookeeper的核心是原子广播,这个机制保证了各个Server之间的同步。
实现这个机制的协议叫作Zab协议。Zab协议有两种模式,它们分别是恢复模式和广播模式。当服务启动或者在Leader崩溃后,Zab就进入了恢复模式,当Leader被选举出来,且大多数Server完成了和Leader的状态同步以后,恢复模式就结束了。
状态同步保证了Leader和Server具有相同的系统状态。

图2.12 Zookeeper体系架构
一旦Leader已经和多数的Follower进行了状态同步后,它就可以开始广播消息了,即进入广播状态。
这时候当一个Server加入Zookeeper服务中,它会在恢复模式下启动,发现Leader,并和Leader进行状态同步。等到同步结束,它也参与消息广播。
Zookeeper服务一直维持在广播状态,直到Leader崩溃了或者Leader失去了大部分的Followers的支持。