distributed systems // 1台では足りない
分散システム
分散システムは、ひとことで言えば「1台では足りないを成立させる」技術です。複数のマシンが、ネットワークの遅延と故障の中でどう協調し、どこまで一貫性を保てるのか。CAP定理・合意(Paxos/Raft)・レプリケーション・分散トランザクションまで、なぜ分散が難しいかを理論から体系化します。
なぜ学ぶのか
- 「なぜ難しいか」が分かる。8つの誤謬・FLP不可能性・CAPで、分散の本質的な限界を掴めます。
- 合意を理解できる。Paxos/Raftがどうリーダーとログの一貫性を保つかを追えます。
- トレードオフを選べる。一貫性・可用性・レイテンシの調整を設計判断にできます。
こんな場面で役立つ
- DBレプリケーション・クォーラム・一貫性ハッシュ
- 合意Paxos/Raftによるリーダー選出とログ複製
- 信頼性Saga・冪等性・バックオフで壊れにくく
- 時刻論理時計・ベクトル時計で因果を捉える
ここでは、合意・レプリケーション・論理時計をPythonの最小シミュで挙動を実証し、メッセージのやり取りはMermaidのsequenceDiagramで描く方針です。基礎から時間と順序・一貫性・合意・レプリケーション・分散トランザクションまでを体系化しました。単一マシンはコンピュータ基礎、Spark等の実装はデータエンジニアリングへ相互リンク。
カリキュラム(全7章)
目次・インデックス
第1章 ── 分散システムの基礎
- 第1章 分散システムの基礎 目次 基礎 必須
- 分散システムとは・なぜ難しいか 基礎 必須
- 分散コンピューティングの誤謬(8つの誤謬) 基礎 必須
- 障害モデル(クラッシュ・オミッション・ビザンチン) 標準 必須
- 透過性とスケーラビリティ 標準
第2章 ── 時間と順序
- 第2章 時間と順序 目次 標準 必須
- 物理時計とクロック同期(NTP) 標準
- 論理時計(Lamportタイムスタンプ) 標準 必須
- ベクトル時計 発展 必須
- グローバルスナップショット(Chandy-Lamport) 発展
第3章 ── 通信とRPC
- 第3章 通信とRPC 目次 標準 必須
- RPCとRMI 標準 必須
- メッセージングと非同期通信 標準
- 配送保証(at-most-once・at-least-once・exactly-once) 発展 必須
第4章 ── 一貫性モデル
- 第4章 一貫性モデル 目次 標準 必須
- 一貫性モデルの地図 標準 必須
- 線形化可能性と逐次一貫性 発展 必須
- CAP定理 標準 必須
- PACELC・結果整合性 発展
第5章 ── 合意
- 第5章 合意 目次 発展 必須
- 合意問題とFLP不可能性 発展 必須
- 2相コミット・3相コミット 標準 必須
- Paxos 発展 必須
- Raft 発展 必須
- リーダー選出(Bully・Ring) 標準
第6章 ── レプリケーションとパーティショニング
- 第6章 レプリケーションとパーティショニング 目次 標準 必須
- レプリケーション方式(同期/非同期・リーダー/リーダーレス) 標準 必須
- クォーラム(R+W>N) 標準 必須
- パーティショニング/シャーディング 標準 必須
- 一貫性ハッシュ 発展 必須
- ゴシップ・反エントロピー・故障検出(SWIM) 発展
第7章 ── 分散トランザクションと信頼性
- 第7章 分散トランザクションと信頼性 目次 標準 必須
- 分散トランザクションとSaga 発展 必須
- 冪等性と再試行・バックオフ 標準 必須
- 分散データストアの設計 標準