【くぉーらむ】
クォーラム とは?
公開:
💡 全員を待たず、必要な数と重なりを確保する
分散システムで、処理の成立に必要とする応答や賛成の数。複製データの読み書きと合意形成では、必要な条件や保証が異なる。
📌 このページのポイント
- 過半数の定足数は floor(N/2)+1。5台なら3台で、過半数同士は必ず重なる
- 同じ固定の複製先N台からW台へ書き込み、R台から読む場合、R+WがNを超えると集合が重なる
- 集合の重なりだけでは線形化可能性を保証しない。同時更新、版の比較、失敗した書き込みの扱いも必要
- Raftの合意とデータストアの読み書きクォーラムは、同じ定足数の考え方を異なる規則で使う
全員が返事をしなくても処理を進めていいの?
決められた数の返事を集めて進めるのがクォーラムの考え方だよ。全員を待つ方式だと、1台の故障でも止まりやすい。必要な数はシステムの規則で決めるんだ。
5台なら何台の返事を待つの?
過半数なら3台だよ。どんな3台の組み合わせでも、別の3台と最低1台は重なる。Raftではこの性質と投票・ログの規則を組み合わせて合意する。3台が互いに通信できるなどの条件が整えば、残り2台が故障しても進められるよ。
データを読むときにも使うんだね!
そうだよ。同じ複製先5台のうち3台への書き込みが成功したあと、3台から読むと、書き込みを受けた台が読み取り集合に含まれる。N=5、W=3、R=3で、R+W=6がNを超えるからだよ。
書くのを2台に減らしても大丈夫なの?
重なりは保証できないよ。A・Bに書いてC・D・Eから読めば、書き込み先と読取先が分かれてしまう。R+W=Nでは足りないんだ。また、障害時に別の複製先へ代替する方式では、同じN台という前提も確認しよう。
重なれば、どんな場合も最新の値になるの?
そこまでは言えないよ。集まった版の比較や、同時に起きる更新、途中で失敗した書き込みも扱う必要がある。式が示すのは集合の重なりであって、それだけで一貫性の全条件がそろうわけではないんだ。
まとめ:ざっくりこれだけ覚えればOK!
「クォーラム」は「全員を待たず、必要な数と重なりを確保する」と押さえておこう!
📖 おまけ:英語の意味
「quorum」 = 定足数
💬 quorumは「定足数」という意味の表現だよ。