分散システム読書リスト
紹介
- 分散システムで最も難しいのは、考え方を変えること。
- このリストは、そのような変化を促すのに役立つ資料を集めたもの。
思考を刺激する資料
- 大規模システム設計に新しい視点を与える記事集。
- Harvest, Yield and Scalable Tolerant Systems: CAP理論の実践的な応用。
- On Designing and Deploying Internet Scale Services: インターネット規模のサービスの設計と展開。
- The Perils of Good Abstractions: 完璧なAPI/インターフェース構築の難しさ。
- Chaotic Perspectives: 大規模システムの予測不可能性と並列性。
- Data on the Outside versus Data on the Inside: データ管理における2つのアプローチ。
- Memories, Guesses and Apologies: データ処理の不確実性。
- SOA and Newton's Universe: サービス指向アーキテクチャへの哲学的アプローチ。
- Building on Quicksand: 不安定な基盤の上にシステムを構築すること。
- Why Distributed Computing?: 分散コンピューティングが必要な理由。
- A Note on Distributed Computing: 分散コンピューティングの基本概念。
- Stevey's Google Platforms Rant: GoogleのSOAプラットフォーム体験。
レイテンシ
- レイテンシの存在と、それにどう対処するか。
- Latency Exists, Cope!: レイテンシがアーキテクチャに与える影響。
- Latency - the new web performance bottleneck: Webパフォーマンスの新たなボトルネック。
- The Tail At Scale: 大規模システムにおけるレイテンシ問題。
Amazon
- 技術そのものよりも、Amazonの文化と組織に関する興味深い内容。
- A Conversation with Werner Vogels: サービスベースアーキテクチャへの移行。
- Discipline and Focus: Amazonのアーキテクチャ転換に関する追加の内容。
- Vogels on Scalability: スケーラビリティに関するVogelsの見解。
Google
- 分散システムの最新技術。
- MapReduce: 大規模データ処理モデル。
- Chubby Lock Manager: 分散ロック管理。
- Google File System: 大規模ファイルシステム。
- BigTable: 分散ストレージシステム。
- Data Management for Internet-Scale Single-Sign-On: 大規模シングルサインオンのデータ管理。
- Dremel: Webスケールのデータセットに対する対話的分析。
- Large-scale Incremental Processing Using Distributed Transactions and Notifications: 分散トランザクションによる大規模インクリメンタル処理。
- Megastore: 対話型サービス向けのスケーラブルで高可用なストレージ。
- Spanner: グローバル分散データベース。
- Photon: 連続データストリームの結合。
- Mesa: リアルタイムデータウェアハウジングシステム。
一貫性モデル
- システム設計において、一貫性と可用性のバランスを探る。
- CAP Conjecture: 一貫性・可用性・分断耐性のトレードオフ。
- Consistency, Availability, and Convergence: 一貫性の上限。
- CAP Twelve Years Later: CAP理論の変化。
- Consistency and Availability: 一貫性と可用性の関係。
- Eventual Consistency: 結果整合性。
- Avoiding Two-Phase Commit: 2フェーズコミットを避ける方法。
- 2PC or not 2PC, Wherefore Art Thou XA?: 2フェーズコミットの限界。
- Life Beyond Distributed Transactions: 分散トランザクションを超えたデータ管理。
- If you have too much data, then 'good enough' is good enough: NoSQLとデータ理論の未来。
- Starbucks doesn't do two phase commit: 非同期メカニズム。
- You Can't Sacrifice Partition Tolerance: 分断耐性の重要性。
- Optimistic Replication: 弱い一貫性へのアプローチ。
理論
- 分散システム設計の重要な要素を説明する論文。
- Distributed Computing Economics: 分散コンピューティングの経済性。
- Rules of Thumb in Data Engineering: データエンジニアリングの経験則。
- Fallacies of Distributed Computing: 分散コンピューティングの誤謬。
- Impossibility of distributed consensus with one faulty process: FLP理論。
- Unreliable Failure Detectors for Reliable Distributed Systems: 信頼できる分散システムのための障害検出器。
- Lamport Clocks: 分散システムにおける時間同期。
- The Byzantine Generals Problem: ビザンチン将軍問題。
- Lazy Replication: 分散サービスのセマンティクス活用。
- Scalable Agreement: サービスとしての順序付け。
- Scalable Eventually Consistent Counters over Unreliable Networks: 不安定なネットワーク上でのスケーラブルな結果整合カウンタ。
言語とツール
- 特定技術を用いた分散システム構築の課題。
- Programming Distributed Erlang Applications: ErlangとOTPを使った分散アプリケーション構築。
インフラ
- インターネットにおける堅牢なタイミング管理の原則。
ストレージ
- Consistent Hashing and Random Trees: 一貫性ハッシュとランダムツリー。
- Amazon's Dynamo Storage Service: Amazonのストレージサービス。
- Paxos Consensus: Paxosアルゴリズムの理解。
- The Part-Time Parliament: Paxosの基礎。
- Paxos Made Simple: Paxosの平易な説明。
- Paxos Made Live: Paxosのエンジニアリング視点。
- Revisiting the Paxos Algorithm: Paxosアルゴリズムの再検討。
- How to build a highly available system with consensus: 合意による高可用システム構築。
- Reconfiguring a State Machine: 状態機械の再構成。
- Implementing Fault-Tolerant Services Using the State Machine Approach: 状態機械アプローチによる耐障害サービス実装。
その他の合意形成論文
- Mencius: WAN向けの効率的なレプリケート状態機械の構築。
- In Search of an Understandable Consensus Algorithm: RAFTアルゴリズムの拡張版。
ゴシッププロトコル (Epidemic Behaviours)
- ゴシップベース通信プロトコルの強力さ。
- Astrolabe: 分散システム監視とデータマイニング技術。
- Epidemic Computing at Cornell: コーネル大学のエピデミックコンピューティング。
- Fighting Fire With Fire: ランダムゴシップを使ってスケーラビリティ限界を克服。
- Bi-Modal Multicast: バイモーダル・マルチキャスト。
- ACM SIGOPS Operating Systems Review: ゴシップベースネットワーキング。
- SWIM: スケーラブルな弱一貫性の感染型プロセスグループメンバーシッププロトコル。
P2P
- Chord: インターネットアプリケーション向けのスケーラブルなP2P検索プロトコル。
- Kademlia: XORメトリックベースのP2P情報システム。
- Pastry: 大規模P2Pシステム向けの分散オブジェクト配置とルーティング。
- PAST: Pastry上に構築された大規模で永続的なP2Pストレージユーティリティ。
- SCRIBE: Pastry上に構築された大規模分散アプリケーションレベル・マルチキャスト基盤。
GN⁺のまとめ
- 分散システムは、複雑な問題を解くために考え方の変化が求められる分野。
- さまざまな資料や論文を通じて、分散システムの設計と実装に関する深い理解を得られる。
- このリストは分散システムの多様な側面を扱っており、特に一貫性モデルとレイテンシ問題に関する洞察を与えてくれる。
- 分散システムに関心のある開発者や研究者にとって有用な資料になりうる。
- 類似機能を持つプロジェクトとしては、Apache Kafka、Apache Cassandra などが勧められる。
まだコメントはありません。