【りーだーせんしゅつ】
リーダー選出 とは?
公開:
💡 代表を選び、任期で新旧を区別する
複数のノードから、処理を取りまとめるリーダーを選ぶ仕組み。Raftでは任期と過半数の投票を使い、同じ任期のリーダーを高々1台にする。
📌 このページのポイント
- リーダーの障害や通信断を疑ったとき、新しい候補を選ぶ。タイムアウトだけで故障とは断定できない
- Raftは任期ごとに各ノードが最大1票を投じ、過半数を得た候補がリーダーになる
- 投票にはログの新しさの条件もあり、票数だけで安全性が決まるわけではない
- 分断された旧リーダーが自分を現役だと思う場合がある。任期や書き込み側の検査が必要
分散システムにもリーダーがいるの?
処理の順番やデータ複製をまとめるために置く設計があるよ。その役割を複数のノードから選び、必要に応じて交代する仕組みがリーダー選出なんだ。ここではRaftを例に見よう。
止まったリーダーはどうやって見つけるの?
一定時間連絡が来なければ故障を疑って選挙を始める。ただし、相手が止まったのか通信が遅いのかはタイムアウトだけでは区別できない。Raftは待ち時間をランダム化して、候補が同時に立つ衝突を減らすよ。
誰が勝つの?
候補は任期番号を進め、自分にも投票して他のノードに票を求める。5台なら3票が必要だよ。各ノードが同じ任期に複数候補へ投票しないので、同じ任期に過半数を得るリーダーは高々1台になるんだ。
古いデータしか持っていない候補でもいいの?
よくないんだ。Raftは投票時にログの新しさも確かめる。最後のログ項目の任期を比べ、それが同じなら末尾の位置を比べる。単純にデータの件数だけで候補を決めるわけではないよ。
前のリーダーがあとから戻ったらどうなるの?
より新しい任期を知ればフォロワーに戻るよ。ただ、通信が途切れている間は旧リーダーが交代を知らないこともある。選出できたことと、古い担当者の外部書き込みを防げることは別で、必要ならフェンシングも組み合わせるんだ。
まとめ:ざっくりこれだけ覚えればOK!
「リーダー選出」は「代表を選び、任期で新旧を区別する」と押さえておこう!
📖 おまけ:英語の意味
「leader election」 = リーダーの選出
💬 leader electionは「リーダーの選出」という意味の表現だよ。