Zookeeper选举源码解析
- 一. Zookeeper选举机制——第一次启动
- 二. Zookeeper选举机制——非第一次启动
- 三. Zookeeper选举源码解析
- ①. 选举准备
- 1. startLeaderElection()选举准备
- 2. createElectionAlgorithm()创建选举算法实例
- 3. 创建 QuorumCnxnManager,负责选举过程中的所有网络通信
- 4. 启动监听线程listener.start()
- 5. 准备开始选举
- 6. 创建各种队列
- ②. 选举执行
- 1. super.start()
- 2. .lookForLeader()
- 3. 更新选票(serverid, zxid, epoch)
- 4. 广播选票 sendNotifications()
- 5. WorkerSender线程
- 6. 判断如果是发给自己的消息,直接进入自己的 RecvQueue
- 7. 如果是发给其他服务器,创建对应的发送队列
- 8. addToSendQueue()
- 8. connectOne() 发送的服务器节点建立通信连接
- 9. initiateConnection(sock, sid)
- 10. startConnection
- 11. SendWorker发送器
- 12. 接收器RecvWorker
- 13. WorkerReceiver
一. Zookeeper选举机制——第一次启动
二. Zookeeper选举机制——非第一次启动
三. Zookeeper选举源码解析
①. 选举准备
1. startLeaderElection()选举准备
2. createElectionAlgorithm()创建选举算法实例
3. 创建 QuorumCnxnManager,负责选举过程中的所有网络通信
4. 启动监听线程listener.start()
5. 准备开始选举
6. 创建各种队列
②. 选举执行
1. super.start()
2. .lookForLeader()
3. 更新选票(serverid, zxid, epoch)
4. 广播选票 sendNotifications()
5. WorkerSender线程
6. 判断如果是发给自己的消息,直接进入自己的 RecvQueue
7. 如果是发给其他服务器,创建对应的发送队列
8. addToSendQueue()
8. connectOne() 发送的服务器节点建立通信连接
9. initiateConnection(sock, sid)
10. startConnection
11. SendWorker发送器
12. 接收器RecvWorker
13. WorkerReceiver