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

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/290610.html
標籤:其他
