Zookeeper 选举底层分析

zookeeper入口类

Zookeeper 选举底层分析

QuorumPeerConfig 解析zookeeper conf 文件下的 zoo.cfg配置文件 

Zookeeper 选举底层分析

涉及到网络通信 (1选举 多个zk节点之间的通信,2 客户端请求(应用程序连接到zkserver) 3 leader follower 之间的数据同步)

Zookeeper 选举底层分析

进入 

Zookeeper 选举底层分析

Zookeeper 选举底层分析

Zookeeper 选举底层分析

Zookeeper 选举底层分析

loadDataBase() 加载数据 cnxnFactory.start()(暴露端口给别人访问) 通信  startLeaderElection() 选举机制

NIOServerCnxnFactory  建立 通信  注册

Zookeeper 选举底层分析

 QuorumPeer类 this.startLeaderElection() 选举方法

Zookeeper 选举底层分析

开始选举机制

Zookeeper 选举底层分析

Zookeeper 选举底层分析

Zookeeper 选举底层分析

Zookeeper 选举底层分析


this.sendNotifications(); 广播自己的票据 sendqueue 队列 

Zookeeper 选举底层分析

this.recvqueue.poll((long)notTimeout, TimeUnit.MILLISECONDS) 接受别的机器上的票据

Zookeeper 选举底层分析

开始比较 epoch , 在比较zxid 最后比较 myid

Zookeeper 选举底层分析

Zookeeper 选举底层分析

最后选举 termPredicate() 方法

Zookeeper 选举底层分析

Zookeeper 选举底层分析

过半原则 选举leader

Zookeeper 选举底层分析

其他的节点链接 leader

Zookeeper 选举底层分析

Zookeeper 选举底层分析

connectToLeader 连接leader 节点 基于 socket 

Zookeeper 选举底层分析