【コンセンサスアルゴリズム】

コンセンサスアルゴリズム とは?

最終更新:
💡 複数のコンピューターで、採用する記録をそろえる

分散システムの複数のノードが、採用する値や処理の順序などをそろえるための手順。ノードの停止や通信の遅れなどを想定し、決定が食い違わないようにする。

📌 このページのポイント
合意の例:Raftの3台構成 現在の任期で、同じログ項目を複製 リーダー ログ X フォロワー ログ X 停止中 応答なし 複製 確認応答 3台中2台に保存 → 過半数で確定 全員の返事は不要/故障の想定が前提
Raftの規則に従い、現在の任期の項目を複製する例です。停止故障を想定し、悪意あるノードへの耐性は別問題です。すべての合意方式が同じ多数決で動くわけではありません。
ひよこ ひよこ
コンセンサスって、みんなで多数決すること?
ペンギン先生 ペンギン先生
複数のノードが採用する値や処理の順序をそろえることだよ。単に票を数えるだけでなく、通信が遅れたり一部が止まったりしても、矛盾する決定をしないための規則を組み合わせるんだ。
ひよこ ひよこ
全員が返事をしないと進めないの?
ペンギン先生 ペンギン先生
方式によるよ。たとえばRaftは過半数のノードが動いて通信できることを進行の条件とする。3台なら2台が必要で、全員の応答を待つ必要はない。ただしRaftは基本的に停止などの故障を想定し、ノードが悪意を持って偽の情報を送る場合まで守る方式ではないんだ。
ひよこ ひよこ
ペンギン先生 ペンギン先生
合意の仕組みに使われるけれど、参加者や障害の想定が異なるよ。PoWは計算作業、PoSは担保として預ける資産などを利用し、大量の偽の参加者を作る攻撃に対抗する。単なる人数や保有量の多数決ではなく、どの履歴を採用するかなどの規則と組み合わせるんだ。
ひよこ ひよこ
採用された記録なら、現実にも正しい?
ペンギン先生 ペンギン先生
合意したことと、入力された内容が現実の事実に合うことは別だよ。合意の手順は、何を採用するかをそろえる役割。取引が業務ルールに合うか、外から入ったデータが信頼できるかも、それぞれ確認する必要があるんだ。
ひよこ ひよこ
ブロックチェーン以外にも使う?
ペンギン先生 ペンギン先生
使うよ。etcdはRaftを使い、Google SpannerはPaxosに基づく複製を行う。用途に応じて参加者、故障の想定、通信の条件などを確認して選ぶ。すべての方式が同じ多数決や経済的な罰則で動くわけではないんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「コンセンサスアルゴリズム」って出てきたら「複数のコンピューターが、採用する記録をそろえる手順」と思えばだいたいOK!
📖 おまけ:英語の意味
「Consensus Algorithm」 = 合意形成のための手順
💬 Consensusは「合意」、Algorithmは問題を解くための手順。停止中のノードまで、その場で全員の応答を集めるという意味ではないよ。

参考資料

← 用語集にもどる