ホーム/ 分散システムの論文

分散システムの論文

分散システムの論文

MapReduce・GFS・Dynamo・Spanner・Paxos… 現代の分散システムの土台になった名論文を、何を解いたか→核心アイデア→その後の影響の順に精読する。

解説記事

精読した名論文

この論文が解いた問題→核心アイデア→その後の影響。数式より「なぜ効くか」を日本語で。

3つの要点応用

Bigtable:疎な多次元マップという分散ストレージ

ペタバイト級の構造化データを数千台へ分散する——2006年のBigtable論文を精読する。疎な多次元マップというデータモデル、タブレット分割、SSTableとChubby、ワイドカラム型NoSQLへ続く設計思想を日本語で読み解く。

3つの要点応用

Dynamo:常に書き込めることを選んだ分散KVS

ノード故障や分断が起きても書き込みを止めない設計とは何か。Amazonが2007年に示したDynamoを、結果整合性・コンシステントハッシュ・クォーラムから読み解き、可用性最優先の分散KVSの勘所をつかめる。

3つの要点応用

GFS:故障を前提に巨大ファイルを扱う分散ファイルシステム

サーバーの故障が日常茶飯事でも巨大ファイルを止めずに扱う——GFSが確立したその設計思想を通じて、単一マスタとチャンク複製、追記中心への割り切りがなぜ効くのかを理解し、HDFSなど現代データ基盤の土台まで把握できる。

3つの要点応用

Lamportの論理クロック:分散システムに「時間」を定義した論文

物理時刻に頼らず因果でイベントの順序を捉える——Lamportの論理クロックを読み解き、分散システムの並行処理・因果整合性・分散合意を支える考え方を、1本の古典論文から身につけられる。

3つの要点応用

MapReduce:大規模並列処理を2つの関数に落とし込む

数千台のマシンでの大規模データ処理を、利用者は map と reduce の2関数を書くだけで実現できる。並列化・耐障害・データ局所性をフレームワークが自動で担うMapReduceの発想を読み解く。

3つの要点応用

Paxos:故障の中でも1つの値に合意する

故障や通信断が起きる分散システムで、複数ノードが1つの値に確実に合意する仕組みを理解できる。Paxosの2フェーズと過半数合意がなぜ安全性を崩さないかを押さえ、ChubbyやRaftへ続く合意基盤の原理をつかめる。

3つの要点応用

Raft:理解しやすさを設計目標にした合意アルゴリズム

分散合意はPaxosが難しく諦めがちだが、Raftはリーダー選出・ログ複製・安全性へ問題を三分割し、腹落ちする形で合意の仕組みを理解できる。etcdやCockroachDBを支える実装知識の土台になる。

3つの要点応用

Spanner:原子時計で世界規模の一貫性を実現する

世界中に分散しても強い一貫性のトランザクションとSQLを両立できる。GoogleのSpannerが原子時計とTrueTimeで「一貫性とスケールは両立しない」という通念をどう覆したかを理解できる。