Follower 和 Leader 狀態同步原始碼
- 一. Follower 和 Leader 狀態同步總結
- 二. Follower和Leader狀態同步原始碼決議
- ①. Leader操作
- 1. Leader.lead()等待接收 follower 的狀態同步申請
- 2. 等待其他 follower 節點向 leader 節點發送同步狀態
- 3. 創建 LearnerHandler
- 4. 從網路中接收訊息,并反序列化為 packet
- 5. Leader 根據從 Follower 獲取 sid 和舊的 epoch,構建新的 epoch
- 6. Leader 向 Follower 發送資訊
- 7. 接收到 Follower 應答的 ackepoch
- 8. syncFollower方法判斷 Leader 和 Follower 是否需要同步
- 9. 第一次提交
- 10. Leader.lead()應答 Follower
- ②. Follower 操作
- 1. Follower.lead()查找并連接 Leader
- 2. 查找,連接,注冊 Leader
- 3. 發送 FollowerInfo 給 Leader
- 4. 讀取 Leader 回傳的結果:LeaderInfo
- 5. 發送 ackepoch 給 leader
- 6. processPacket()應答 Leader 同步結果
- 7.Commit() 提交
一. Follower 和 Leader 狀態同步總結


二. Follower和Leader狀態同步原始碼決議


①. Leader操作
1. Leader.lead()等待接收 follower 的狀態同步申請

2. 等待其他 follower 節點向 leader 節點發送同步狀態


3. 創建 LearnerHandler

4. 從網路中接收訊息,并反序列化為 packet

5. Leader 根據從 Follower 獲取 sid 和舊的 epoch,構建新的 epoch

6. Leader 向 Follower 發送資訊

7. 接收到 Follower 應答的 ackepoch

8. syncFollower方法判斷 Leader 和 Follower 是否需要同步


9. 第一次提交


10. Leader.lead()應答 Follower


②. Follower 操作
1. Follower.lead()查找并連接 Leader

2. 查找,連接,注冊 Leader

3. 發送 FollowerInfo 給 Leader

4. 讀取 Leader 回傳的結果:LeaderInfo

5. 發送 ackepoch 給 leader


6. processPacket()應答 Leader 同步結果

7.Commit() 提交

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