成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

運行 3000 次都不出錯的 MIT 6.824 Raft 實驗

開發 前端
前幾天在分布式系統交流群里,小伙伴們都在討論 6.824 的 raft 實驗批量測試 2000 次以上總會出錯,錯誤出在 Figure8Unreliable 和 UnreliableChurn2 這兩個測試。

[[396431]]

前幾天在分布式系統交流群里,小伙伴們都在討論 6.824 的 raft 實驗批量測試 2000 次以上總會出錯,錯誤出在 Figure8Unreliable 和 UnreliableChurn2 這兩個測試。我自己其實也遇到了這個問題,這里記錄下我自己的解決思路。

能到這步,首先默認你的程序已經沒有大的問題,只是在上千次的測試中會有選舉不出來(活鎖問題)或提交的日志沖突問題。如果連單次測試都還過不去,請先移步《【MIT 6.824】學習筆記 5: 2021 Raft 實驗實現細節》

上面兩個測試說白了,就是把網絡搞得很亂,寫一堆日志,然后給你 10 秒時間,沒選出新的 Leader 就會出錯。主要有兩種錯誤:failed to reach agreement 或者 apply error

這兩個問題分別用下面兩種思路解決。

選舉超時不能隨便重置

如果仔細閱讀過 Students' Guide to Raft,其實里面很清楚寫著,選舉超時時間只能在下面三種情況下重置:

  • 收到現任 Leader 的心跳請求,如果 AppendEntries 請求參數的任期是過期的(args.Term < currentTerm),不能重置;
  • 節點開始了一次選舉;
  • 節點投票給了別的節點(沒投的話也不能重置);

原文:

you should only restart your election timer if a) you get an AppendEntries RPC from the current leader (i.e., if the term in the AppendEntries arguments is outdated, you should not reset your timer); b) you are starting an election; or c) you grant a vote to another peer.

這個問題其實很容易理解,主要容易錯在,代碼改著改著,就會不小心搞錯了選舉時間重置的位置,然后給后面的排查埋下了坑。

檢查一下你是否胡亂重置了這個時間,我和群里另一位小伙伴的問題就出現在第三種情況。

正確處理 rpc 響應

處理 rpc 響應的時候也要小心,收到 rpc 響應的時候,如果 currentTerm != args.Term 了,這次 rpc 就要丟掉不能用了。

當然,如果節點角色已經變了,那也要忽略掉這次 rpc 響應。

總結

調試這個問題主要是要細心,關注細節,多讀幾遍:https://thesquareplanet.com/blog/students-guide-to-raft/

進行批量測試的腳本在這里:https://gist.github.com/jonhoo/f686cacb4b9fe716d5aa

使用方法是:

  1. ./go-test-many.sh 測試次數 并行數(默認是 CPU 個數) 哪個測試 

例如要測試 2C 這個測試 2000 次,并行 8 個測試。

  1. ./go-test-many.sh 2000 8 2C 

又比如單獨測試 TestFigure8Unreliable2C 2000 次。

  1. ./go-test-many.sh 2000 8 TestFigure8Unreliable2C 

本文轉載自微信公眾號「多顆糖」,可以通過以下二維碼關注。轉載本文請聯系多顆糖公眾號。

 

責任編輯:武曉燕 來源: 多顆糖
相關推薦

2023-06-09 16:50:21

Tigerbo

2022-06-20 11:15:08

日志容器Kubernetes

2023-07-04 14:01:26

GPT-4模型

2020-02-21 10:10:56

分布式架構系統

2023-07-14 09:56:24

人工智能模型

2020-08-14 09:07:14

RaftApacheRatis

2012-09-20 10:08:17

PowerShell

2010-12-16 15:14:39

IBM超算

2024-07-08 09:05:00

2022-12-22 15:37:12

AI代碼

2021-08-19 14:48:49

多因素認證/MFA/數

2021-10-18 10:14:54

數據技術模型

2010-08-12 10:34:02

2023-11-02 09:33:31

Go語言Raft算法

2022-05-09 15:30:55

人工智能麻省理工

2013-08-05 17:13:46

NETGEAR路由NETGEAR

2009-05-07 10:24:02

CCIE思科RS

2025-06-12 01:33:00

Git項目遠程倉庫

2021-05-31 08:01:11

Raft共識算法

2022-06-22 10:33:06

麻省理工大學PaShUnix shell
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久精品色欧美aⅴ一区二区 | 成人精品鲁一区一区二区 | 欧美激情视频一区二区三区在线播放 | 日韩精品一区二区三区中文在线 | 超碰97人人人人人蜜桃 | 成人一区二区三区 | 亚洲人成一区二区三区性色 | 美女精品一区 | 午夜视频一区二区三区 | 久久久久久久久久久久久久国产 | 国产欧美日韩一区二区三区在线观看 | 91精品久久久 | 精产国产伦理一二三区 | 欧美在线激情 | 久久国产精品网 | 日韩三级在线观看 | 国产精品免费福利 | 国产精品久久久久久久久久免费看 | 欧美综合一区二区 | 秋霞a级毛片在线看 | 国产精品欧美大片 | 精品视频一区二区 | 欧美精品中文字幕久久二区 | 91亚洲精品久久久电影 | 日韩精品一区二区三区免费观看 | 91人人澡人人爽 | 999久久久 | 亚洲精品久久久久久久久久久 | 国产欧美精品在线观看 | 欧美激情精品久久久久久 | 亚洲va欧美va天堂v国产综合 | 国产精品久久久久久久7777 | 日韩一区二区在线播放 | 韩日三级| 成人精品一区二区三区中文字幕 | 国产乱码精品1区2区3区 | 中文一级片 | 超碰网址 | 九七午夜剧场福利写真 | 国产精品成人国产乱一区 | 欧美无乱码久久久免费午夜一区 |