Leader 选举
Leader 选举发生在服务启动时或者崩溃恢复时
http://www.imooc.com/wiki/Zookeeper/zookeeperleader.html
- 起始阶段选票包含自身ZXID 和 服务器myid, 第一轮选举像所有服务器广播自己的选票。
- 之后每个服务器和广播来的选票进行比较,选择ZXID 和 Myid 最大的来更新自己的选票
-
ZAB 协议 (原子广播协议)
两种工作模式:崩溃恢复 + 消息广播
三种状态:looking (选举状态) + Following (从节点所处状态) + leading(主节点所处状态)崩溃恢复
Leader election 和 起始阶段的leader 选举一样
- Discovery : 这时候选出来的leader 不能直接用, 上一阶段的follower将自己的epoch发送给leader,leader选出最大的epoch 并加1 作为自身epoch, 并将其返回给所有的follower, follower根据epoch更新自己的ZXID, 再把更新后的ZXID, 最新的历史事物日志和ACK确认消息返回给leader。leader接受到最新的ZXID 和事务日志后,更新自己的事务日志
- Synchronization : leader 将自己的最新日志和数据同步到follower中,当半数以上的follower同步完成后,leader就可以称为真正的leader。
数据同步
分布式锁
负载均衡
http://www.imooc.com/wiki/Zookeeper/zookeeperloadblance.html