Mímisbrunnr知恵の泉

← 分散システム 一覧

🎓 レベル:標準 | 重要度:B(重要)

📎 前提:レプリケーション方式(同期/非同期・リーダー/リーダーレス) | 関連:CAP定理クォーラム(R+W>N)

要点(BLUF)

問題設定 ── 全理論を1つの設計に

理論を個別に学んでも、実際の設計は「全部を同時に決める」作業です。残高を扱うのか、いいね数か。レンジ検索が要るか。何台落ちても動くべきか。これらの要件が、一貫性モデル・複製・分割・信頼性の選択を一意に縛っていきます。

設計フレーム ── 要件から逆算する

flowchart TB
    REQ["要件(正しさ/可用性/遅延/規模/アクセス型)"] --> C{"強整合が必須?"}
    C -->|"はい(残高・在庫・ロック)"| CP["CP・リーダー合意(Raft)・R+W>N"]
    C -->|"いいえ(SNS・計測・カート)"| AP["AP・リーダーレス・結果整合"]
    REQ --> PK["分割キー(同一トランザクションを1パーティションに収める)"]
    REQ --> REP["複製数・配置(地理・耐障害 f 台)"]
判断軸強整合寄り高可用寄り参照
一貫性線形化可能(CP)結果整合(AP)CAP定理PACELC・結果整合性
複製の受け口リーダー+合意リーダーレス+クォーラムレプリケーション方式(同期/非同期・リーダー/リーダーレス)
読み書き同期・W>N/2R/W を緩めて低遅延クォーラム(R+W>N)
分割キーで凝集ハッシュで均等分散パーティショニング/シャーディング一貫性ハッシュ
故障検出/収束合意ベースゴシップ/反エントロピーゴシップ・反エントロピー・故障検出(SWIM)
またぎ更新2PC+合意Saga+補償2相コミット・3相コミット分散トランザクションとSaga

設計の直観 ── 代表3アーキの選択

正しさの観点 ── 全体として破綻しないか

設計レビューの観点を、安全性/活性で整理します。

なぜ分散だと難しいか(直観)

1台のRDBは ACID と単純さを無料でくれます。分散データストアは、スケールと可用性を買う代わりに、一貫性・トランザクション・運用の複雑さを自分で組む。だから「本当に分散が要るか」を最初に問い、要るなら「どのデータにどの強さが必要か」をデータ単位で割り当てる。理論はこの割り当てを誤らないための地図です。

⚠️ よくある誤解・落とし穴

対応ラボ

なし(総括回)。各構成要素のラボは クォーラム(R+W>N)一貫性ハッシュゴシップ・反エントロピー・故障検出(SWIM)冪等性と再試行・バックオフ を参照。

関連

第7章 分散トランザクションと信頼性 目次