出版社内容情報
さまざまな製品やサービスの内部で何が起こっているのかをよく理解し,説明の行き届いた効果的な選択を行いたい実務専門家にお薦めの書.
本書の前半では,分散システム設計の重要なトピックをカバー.分散システム設計における課題とその解決策を提示.後半では,詳細なソリューション(解決策)をパターンとして構造化し記載.
パターンは,レプリケーション,パーティショニング,クラスタ管理,ネットワーク通信の四つのおもなカテゴリに分類.前半の概説の章を読まれた上で,興味や要件に基づいてパターンを探索されたい.
なお,さまざまな製品で採用されている設計の代替案に関する参考文献を多数提示.また,ほとんどのパターンには,Javaのコードを例示.最小限のJava 言語機能(メソッドとクラスが大部分)を使用しており,たいていのプログラミング言語で利用可能.
分散システム設計を深く理解し,一般的な問題を解決する方法を学べる書.パターンのアプローチにより実装の側面をわかりやすく説明.
分散システム設計をより深く理解し,一般的な問題を解決する方法を学ぶことができる書.
本書の特長:
・ 分散システムとは何か,なぜ必要なのかがわかる
・ データベース,インメモリデータグリッド,メッセージブローカーなど幅広いシステムの実装を理解できる
・ オープンソースのコードベースを自信をもって探索し,パターンやソリューションが実世界のシステムにどのようにマッピングされているかを発見できるようになる
【目次】
第I部 Narratives
Chapter 1 分散システムの可能性とその課題
単一サーバーでの限界 / ビジネスのロジックとデータの階層を分離する / データの分割 / 障害の様相/ レプリケーション(多重化):隠ぺい時の障害≪ プロセスクラッシュ / ネットワークの遅延 / プロセスの停止 / 非同期クロック≫ / “分散システム”の定義 / “パターン”によるアプローチ
Chapter 2 パターンの概要
単一サーバーにおけるデータの保全 / 更新の競合 / リーダー障害への対処 / 複数の障害に対しては‘世代クロック’による対処が必要 / ログエントリーは‘多数決クォーラム’において承認されるまでコミットされない / ‘ハイウォーターマーク’に基づくフォロワーのコミット / リーダーが複数のクライアントに対応するために一連の待ち行列を利用する / フォロアーが‘読出しリクエスト’を扱うことでリーダーにおける負荷を軽減できる / 大容量データは複数ノードに分割することができる / 耐性を得るためにパーティションの複製を行う / 分割された領域の整合性を保つためには少なくとも2相ロックは不可欠 / 分散システムにおいて順序関係はシステムのタイムスタンプには依存しない / ‘一貫性コア’はデータクラスタにおけるメンバーシップの管理を実施できる / 非中心型のクラスタ管理における‘ゴシップ伝播’
第II 部 データレプリケーションのパターン
Chapter 3 書込み先行ログ(Write-Ahead Log)
解決すべき課題 / 解決策≪実装に際しての検討事項 / トランザクショナル記憶での使用 / イベントの源泉を比較する≫ / 実装例
Chapter 4 セグメント化ログ(Segmented Log)
解決すべき課題 / 解決策 / 実装例
Chapter 5 低位ウォーターマーク(Low-Water Mark)
解決すべき課題 / 解決策≪スナップショットベースの‘低位ウォーターマーク’/ 時刻ベースの‘低位ウォーターマーク’≫ / 実装例
Chapter 6 リーダーとフォロワー(Leader and Followers)
解決すべき課題 / 解決策≪リーダーの選出[選挙アルゴリズム /‘一貫性コア’を使用したリーダー選挙]/ なぜクォーラムリード/ライトだけでは強力な一貫性保証に不十分なのか;並行性,ロック,状態更新;ZabとRaft≫/ 実装例
Chapter 7 ハートビート(HeartBeat)
解決すべき課題 / 解決策 ≪小規模クラスタ:同意ベースのシステム / 技術上の検討事項 / 大規模クラスタ:ゴシップベースプロトコル≫/ 実装例
Chapter 8 多数決クォーラム(Majority Quorum)
解決すべき課題≪安全性と活性≫ / 解決策≪クラスタ内のサーバー数の決定 / 柔軟なクォーラム≫/ 実