操作して学ぶ
Raft合意シミュレータ
複数のサーバーが1つの値に合意するための分散合意アルゴリズム「Raft」を、5ノードで動かします。 リーダー選出・ログ複製・コミット、そしてリーダー障害からの自動復旧を、止めて・送って観察してください。
LeaderCandidateFollowerDead
ノードをクリックで停止/復帰
現在の term: 0Leader: 不在
N0
N1
N2
N3
N4
コミット済複製済・未コミット
再生を押すと選挙が始まります。リーダーを停止して再選出を、コマンド送信でログ複製を観察できます。
各フォロワーはランダムな選挙タイムアウトを持ち、リーダーのハートビートが途絶えると候補者になり term を上げて投票を募ります。過半数(3/5)の得票でリーダーになり、以後クライアントのコマンドを自分のログに追記して複製、多数派に届いた時点でコミットします。 本デモはメッセージ配送やネットワーク分断を簡略化しています。すべてブラウザ内で計算。
Raftの要点
- 任期(term)=論理時計:選挙のたびに単調増加し、古いリーダーを見分ける物差しになる。
- 過半数が肝:リーダー選出もコミットも「過半数」で決める。だから少数ノードが落ちても止まらず、二重リーダーも起きない。
- ランダムな選挙タイムアウト:同時立候補(分割投票)を避け、たいてい1ノードが先に立って決着する。
- ログはリーダー経由でのみ増える:クライアントの書き込みはリーダーが受け、多数派に複製できた時点でコミット=確定する。