Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
第7章「一貫性と複製」
分散システム本読書会資料
2013年6月28日(金) 服部 健太
この章の内容
 複製(レプリケーション)の有用性
 一貫性モデル
 データ中心一貫性モデル
 クライアント中心一貫性モデル
 一貫性を実現するための手法
 レプリカサーバの配置とコンテンツの配信
 一貫性維持のためのプロトコル
2...
複製の理由
 なぜわざわざデータを複製するのか?
 信頼性(Reliability)
 複製(レプリカ)のうちの1つがクラッシュしても別の複製に
アクセス可能
 3つのうちのどれか1つの書き込みに失敗しても多数決で修正
可能
 性能(...
スケーラビリティ実現のための複製
 レプリケーションやキャッシングによってスケーラ
ビリティ問題を解決する
 データのコピーをクライアントの近くに配置
 ⇒アクセス時間の削減により性能改善
 問題点:
 複製を最新の状態に保つにはネッ...
データ中心一貫性モデル
 データストア(data store)
 データを格納する論理的な場所
 共有メモリ,データベース,ファイルシステムなど
 物理的には複数のマシンに分散しているかもしれない
 分散共有メモリ,分散データベース,...
データ中心一貫性モデル
 一貫性モデル(consistency model)
 本質的にはプロセスとデータストア間の契約である
 プロセスが定められたルールに従ってアクセスすれば,データ
ストアが正しく動作することを約束する
 様々な一...
連続的一貫性(continuous consistency)
 データ複製の最善解は存在しない
 一貫性を緩和することで,効率的な解決策が得られる
 ⇒一貫性を緩和する一般的な方法も存在しない
 不一貫性を定義する3つの独立した軸
 ...
コニットの概念
 コニット(Consistency Unit)
 一貫性が測られるデータ単位を特定する
 不一貫性を定義するためにYuとVahdatが導入
 例:
 ある1つの銘柄の株を表すレコード
 個々の天気予報
2013/6/...
コニットの例
2013/6/289 第7章:「一貫性とレプリケーション」
コニットの例(続き)
 コニット:変数xとyを含む
 各レプリカはベクトルクロックを保持
 BはAにオペレーション[<5,B>: x := x+2]を送信
 Aはこのオペレーションをコミットし,ロールバックで
きない
 Aは3つの保留...
逐次一貫性(sequential consistency)
 定義:
 どのような実行結果も、すべてのプロセスがある順序で
逐次的に実行した結果と等しく、かつ、個々のプロセス
の処理順序がプログラムで指定された通りであること
2013/6/...
逐次一貫性を持つデータストアでのプロセス実
行例
2013/6/28第7章:「一貫性とレプリケーション」12
 P1, P2, P3は分散配置されたプロセス
 P1, P2, P3は並列に実行
 各プロセス内では文の順番どおりに実行
 ...
逐次一貫性を持つデータストアでの可能な実行
結果
2013/6/28第7章:「一貫性とレプリケーション」13
 逐次一貫性を満たす4つの実行系列(全90通りからの抜
粋)
 プリントアウト:端末への実際の出力
 シグネチャ:P1, P2,...
因果一貫性(causal consistency)
 定義:
 因果的に関連している可能性のある書き込みは,すべて
のプロセスによって同じ順序で観測されなければならな
い.異なるマシンでは,並行書き込みは異なる順序で観
測されてもよい. 並...
オペレーションのグループ化
 順序一貫性と因果一貫性は読み取りと書き込み操作
のレベルで定義されている
 ⇒細粒度
 アプリケーションにおいては、共有データにアクセ
スするプログラムは相互排他のための同期メカニズ
ムを利用する
 ENT...
エントリー一貫性
 エントリー一貫性を満たすデータストアの性質:
 あるプロセスに関して、保護された共有データへのすべ
ての更新が完了するまで、同期変数への獲得操作は完了
されない
 あるプロセスによる同期変数への排他モードアクセスを、
...
エントリー一貫性の例
 P2はyのロックを獲得していないので、R(y)はNILと
なるかもしれない
2013/6/2817 第7章:「一貫性とレプリケーション」
クライアント中心一貫性モデル
 データ中心一貫性モデル
 システム全体にわたって一貫性を提供
 クライアント中心一貫性モデル(client-centric
consistency models)
 システム全体の一貫性は失われているが、...
イベンチュアル一貫性
(eventual consistency)
 長期間更新(write)操作が実行されなければ、いつ
かはすべての複製の同期がとれて、システム全体が
一貫した状態になることを保証
 例)DNS, WWWなど
 ほとん...
モバイルユーザーにとっての一貫性
 分散データベースに、ノートPC経由でアクセスする
例:
 A地点で、ノートPCをデータベースに接続し、読み込み
と更新操作を実行
A地点
B地点
2013/6/2820 第7章:「一貫性とレプリケーション」
モバイルユーザーにとっての一貫性
 B地点に移動して、別のサーバにアクセスして作業
継続⇒以下のような、不一貫性に気付くかもしれな
い
 A地点での更新がまだ反映されていない可能性
 A地点で読み込んだものより新しいエントリを読み込む
可...
クライアント中心一貫性モデルの必要性
2013/6/28第7章:「一貫性とレプリケーション」22
 ある1つのクライアントからは、一貫性があるよう
に見えるようにした
 ⇒クライアント中心一貫性モデルを導入
 モバイルコンピューティングの...
モノトニック読み取り
2013/6/28第7章:「一貫性とレプリケーション」23
 モノトニック読み取り一貫性(monotonic-read
consistency)
 プロセスがデータxの値を読み込むと、同じプロセスによる移
行のxに対す...
モノトニック読み取りの例
2013/6/28第7章:「一貫性とレプリケーション」24
 モノトニック読み取り一貫性のあるデータストア
 モノトニック読み取り一貫性のないデータストア
モノトニック読み取りの応用例
2013/6/28第7章:「一貫性とレプリケーション」25
 分散メールボックス
 いつどこのメールサーバに接続しても、前回までにサー
バにアクセスした際に読めたメールは全て、移動先でも
読めることを保証する。
モノトニック書き込み
2013/6/28第7章:「一貫性とレプリケーション」26
 モノトニック書き込み一貫性(monotonic-write
consistency)
 プロセスのデータxへのwrite操作は、同じプロセスによる
xへの後...
モノトニック書き込みの例
2013/6/28第7章:「一貫性とレプリケーション」27
 モノトニック書き込み一貫性のあるデータストア
 モノトニック書き込み一貫性のないデータストア
書き込み後読み取り
2013/6/28第7章:「一貫性とレプリケーション」28
 書き込み後読み取り一貫性(read-your-write
consistency)
 プロセスがデータxへのwrite操作の結果は、同じプロセス
による後続の...
書き込み後読み取りの例
2013/6/28第7章:「一貫性とレプリケーション」29
 書き込み後読み取り一貫性のあるデータストア
 書き込み後読み取り一貫性のないデータストア
読み取り後書き込み
2013/6/28第7章:「一貫性とレプリケーション」30
 読み取り後書き込み(write-follow-read
consistency)
 前回のデータxに対するread操作に後続するxへのwrite操
作は、常に...
読み取り後書き込みの例
2013/6/28第7章:「一貫性とレプリケーション」31
 読み取り後書き込み一貫性のあるデータストア
 読み取り後書き込み一貫性のないデータストア
Upcoming SlideShare
Loading in …5
×

分散システム第7章(前半)

2,441 views

Published on

Published in: Technology
  • Be the first to comment

分散システム第7章(前半)

  1. 1. 第7章「一貫性と複製」 分散システム本読書会資料 2013年6月28日(金) 服部 健太
  2. 2. この章の内容  複製(レプリケーション)の有用性  一貫性モデル  データ中心一貫性モデル  クライアント中心一貫性モデル  一貫性を実現するための手法  レプリカサーバの配置とコンテンツの配信  一貫性維持のためのプロトコル 2013/6/282 第7章:「一貫性とレプリケーション」
  3. 3. 複製の理由  なぜわざわざデータを複製するのか?  信頼性(Reliability)  複製(レプリカ)のうちの1つがクラッシュしても別の複製に アクセス可能  3つのうちのどれか1つの書き込みに失敗しても多数決で修正 可能  性能(Performance)  クライアント数が増大したら,サーバを複製し処理を分割する  地理的にエリアが拡大したら,クライアントの近くにサーバの 複製を配置する  複製の代償  複数のレプリカで一貫性(Consistency)を保証する必要 あり  1つのコピーに対する変更がすべてのコピーに対して行われる 2013/6/283 第7章:「一貫性とレプリケーション」
  4. 4. スケーラビリティ実現のための複製  レプリケーションやキャッシングによってスケーラ ビリティ問題を解決する  データのコピーをクライアントの近くに配置  ⇒アクセス時間の削減により性能改善  問題点:  複製を最新の状態に保つにはネットワーク帯域幅が必要  読み込み頻度 N回/秒,更新頻度 M回/秒として,N≪Mなら ば更新のコストが割に合わない  複製の一貫性を維持すること自体がスケーラビリティ問題とな りうる  コピーを常に同じ状態にしておく⇒1つの更新はすべてのコピーに, 単一のアトミック操作として処理しなくてはならないため,大規模 ネットワークでは困難  ⇒一貫性制約をあきらめる(要求を緩和する) 2013/6/284 第7章:「一貫性とレプリケーション」
  5. 5. データ中心一貫性モデル  データストア(data store)  データを格納する論理的な場所  共有メモリ,データベース,ファイルシステムなど  物理的には複数のマシンに分散しているかもしれない  分散共有メモリ,分散データベース,分散ファイルシステムな ど  プロセスはデータストア全体のうち,自分に近いローカ ルコピーにアクセス 2013/6/285 第7章:「一貫性とレプリケーション」
  6. 6. データ中心一貫性モデル  一貫性モデル(consistency model)  本質的にはプロセスとデータストア間の契約である  プロセスが定められたルールに従ってアクセスすれば,データ ストアが正しく動作することを約束する  様々な一貫性モデル  通常はあるデータを読み取るプロセスは,そのデータへ 最後に書き込まれた値が返ってくることを期待  ⇒グローバルクロックがない状況では,どの書き込みが 最後のものかを正確に定義するのは難しい  ⇒他の定義を用意する必要がある  トレードオフ  制限の少ないモデルは使いやすいが,制限の多いモデル に比べて性能が出しにくい 2013/6/286 第7章:「一貫性とレプリケーション」
  7. 7. 連続的一貫性(continuous consistency)  データ複製の最善解は存在しない  一貫性を緩和することで,効率的な解決策が得られる  ⇒一貫性を緩和する一般的な方法も存在しない  不一貫性を定義する3つの独立した軸  数値的相違(numerical deviation)  レプリカ間でどこまで値の数値的なズレを許すか  株式市場価格のようにデータが数値的意味を持つアプリで使用  陳腐化相違(staleness deviaion)  どこまで古いデータを許すか  天気予報は数時間程度なら古いデータでも問題ない  順番的相違(ordering deviation)  更新の順番がある範囲に収まっている限り,レプリカ間で異 なっていてもよいようなアプリ 2013/6/287 第7章:「一貫性とレプリケーション」
  8. 8. コニットの概念  コニット(Consistency Unit)  一貫性が測られるデータ単位を特定する  不一貫性を定義するためにYuとVahdatが導入  例:  ある1つの銘柄の株を表すレコード  個々の天気予報 2013/6/288 第7章:「一貫性とレプリケーション」
  9. 9. コニットの例 2013/6/289 第7章:「一貫性とレプリケーション」
  10. 10. コニットの例(続き)  コニット:変数xとyを含む  各レプリカはベクトルクロックを保持  BはAにオペレーション[<5,B>: x := x+2]を送信  Aはこのオペレーションをコミットし,ロールバックで きない  Aは3つの保留状態のオペレーションを持つ  ⇒順番的相違=3  AはBからのオペレーション<10,B>をまだ感知していな い  ⇒数値的相違=(1, 5)  回数相違=1  値相違=5(このオペレーションを受け取ると,y+=5で現在の 値より5大きくなるので) 2013/6/2810 第7章:「一貫性とレプリケーション」
  11. 11. 逐次一貫性(sequential consistency)  定義:  どのような実行結果も、すべてのプロセスがある順序で 逐次的に実行した結果と等しく、かつ、個々のプロセス の処理順序がプログラムで指定された通りであること 2013/6/2811 第7章:「一貫性とレプリケーション」
  12. 12. 逐次一貫性を持つデータストアでのプロセス実 行例 2013/6/28第7章:「一貫性とレプリケーション」12  P1, P2, P3は分散配置されたプロセス  P1, P2, P3は並列に実行  各プロセス内では文の順番どおりに実行  x, y, zは分散共有メモリ上の変数  書いた値が即座に他のプロセスから読み出せるとは限ら ない  ただし、逐次一貫性を満たすと仮定  最初は0に初期化
  13. 13. 逐次一貫性を持つデータストアでの可能な実行 結果 2013/6/28第7章:「一貫性とレプリケーション」13  逐次一貫性を満たす4つの実行系列(全90通りからの抜 粋)  プリントアウト:端末への実際の出力  シグネチャ:P1, P2, P3の出力をこの順で連結したもの
  14. 14. 因果一貫性(causal consistency)  定義:  因果的に関連している可能性のある書き込みは,すべて のプロセスによって同じ順序で観測されなければならな い.異なるマシンでは,並行書き込みは異なる順序で観 測されてもよい. 並行因果 2013/6/2814 第7章:「一貫性とレプリケーション」
  15. 15. オペレーションのグループ化  順序一貫性と因果一貫性は読み取りと書き込み操作 のレベルで定義されている  ⇒細粒度  アプリケーションにおいては、共有データにアクセ スするプログラムは相互排他のための同期メカニズ ムを利用する  ENTER_CS: クリティカルセクションへの進入  LEAVE_CS: クリティカルセクションからの離脱  ⇒粒度が上がる 2013/6/2815 第7章:「一貫性とレプリケーション」
  16. 16. エントリー一貫性  エントリー一貫性を満たすデータストアの性質:  あるプロセスに関して、保護された共有データへのすべ ての更新が完了するまで、同期変数への獲得操作は完了 されない  あるプロセスによる同期変数への排他モードアクセスを、 そのプロセスに関して行う前に、他のプロセスは(たと え非排他モードでも)ロックを獲得していてはならない  同期変数への排他モードアクセスが行われた後は、その 変数の所有者が排他モードアクセスを完了するまで、他 のプロセスによる、その同期変数への次の非排他モード アクセスを行うことは許されない 2013/6/2816 第7章:「一貫性とレプリケーション」
  17. 17. エントリー一貫性の例  P2はyのロックを獲得していないので、R(y)はNILと なるかもしれない 2013/6/2817 第7章:「一貫性とレプリケーション」
  18. 18. クライアント中心一貫性モデル  データ中心一貫性モデル  システム全体にわたって一貫性を提供  クライアント中心一貫性モデル(client-centric consistency models)  システム全体の一貫性は失われているが、1つのクライ アントから見た場合、そのことは隠ぺいされている  1つのクライアントがいろいろな場所の複製にアクセスする場 合に有用 2013/6/2818 第7章:「一貫性とレプリケーション」
  19. 19. イベンチュアル一貫性 (eventual consistency)  長期間更新(write)操作が実行されなければ、いつ かはすべての複製の同期がとれて、システム全体が 一貫した状態になることを保証  例)DNS, WWWなど  ほとんどの操作はread  更新(write)操作ができるのは1つのプロセスのみ  実装が容易  更新がくつかはすべての複製に伝播することのみ保証すればよ い  更新を行うのは限られたプロセスのみ⇒write-write競合の解決は 容易  クライアントが常に同じ複製にアクセスするならば問題 はない  異なる複製にアクセスする場合(モバイルユーザーな ど)、問題が生じる 2013/6/2819 第7章:「一貫性とレプリケーション」
  20. 20. モバイルユーザーにとっての一貫性  分散データベースに、ノートPC経由でアクセスする 例:  A地点で、ノートPCをデータベースに接続し、読み込み と更新操作を実行 A地点 B地点 2013/6/2820 第7章:「一貫性とレプリケーション」
  21. 21. モバイルユーザーにとっての一貫性  B地点に移動して、別のサーバにアクセスして作業 継続⇒以下のような、不一貫性に気付くかもしれな い  A地点での更新がまだ反映されていない可能性  A地点で読み込んだものより新しいエントリを読み込む 可能性  B地点での更新作業がA地点での作業と衝突する可能性 2013/6/2821 第7章:「一貫性とレプリケーション」
  22. 22. クライアント中心一貫性モデルの必要性 2013/6/28第7章:「一貫性とレプリケーション」22  ある1つのクライアントからは、一貫性があるよう に見えるようにした  ⇒クライアント中心一貫性モデルを導入  モバイルコンピューティングのためのデータベースシス テムBayouの研究から派生  4つの異なる一貫性モデルを区別
  23. 23. モノトニック読み取り 2013/6/28第7章:「一貫性とレプリケーション」23  モノトニック読み取り一貫性(monotonic-read consistency)  プロセスがデータxの値を読み込むと、同じプロセスによる移 行のxに対するread操作では、常に同じ値か、より新しい値が 読み込まれる  記法の導入:  xi[t]:時刻tにおけるローカルコピーLiのデータ項目xのバージョ ン  WS(xi[t]):ローカルコピーLiにおいて、xの値を初期値からxi[t] にするまでのwrite操作の集合  WS(xi[t1];xj[t2]): ローカルコピーLjにおいて、xの値を初期値から xj[t2]にするまでのwrite操作の集合であり、WS(xi[t1])を部分集合 として含むもの  文脈から明らかな場合は、時刻tの添え字は省略する
  24. 24. モノトニック読み取りの例 2013/6/28第7章:「一貫性とレプリケーション」24  モノトニック読み取り一貫性のあるデータストア  モノトニック読み取り一貫性のないデータストア
  25. 25. モノトニック読み取りの応用例 2013/6/28第7章:「一貫性とレプリケーション」25  分散メールボックス  いつどこのメールサーバに接続しても、前回までにサー バにアクセスした際に読めたメールは全て、移動先でも 読めることを保証する。
  26. 26. モノトニック書き込み 2013/6/28第7章:「一貫性とレプリケーション」26  モノトニック書き込み一貫性(monotonic-write consistency)  プロセスのデータxへのwrite操作は、同じプロセスによる xへの後続のwrite操作よりも前に完了している  ⇒同じプロセスから行われるwrite操作は、起動された順 序で行われる  より弱い形の一貫性として、すべての先行するwrite操作は同様 に実行されるが、その順序は本来の起動された順序どおりに なっていなくても許容するものもある。(write操作が可換で順 序が重要でない場合には適用可能)
  27. 27. モノトニック書き込みの例 2013/6/28第7章:「一貫性とレプリケーション」27  モノトニック書き込み一貫性のあるデータストア  モノトニック書き込み一貫性のないデータストア
  28. 28. 書き込み後読み取り 2013/6/28第7章:「一貫性とレプリケーション」28  書き込み後読み取り一貫性(read-your-write consistency)  プロセスがデータxへのwrite操作の結果は、同じプロセス による後続のread操作で必ず観測される  例:  ウェブページを更新すると、以降、自分のブラウザでは (キャッシュの内容ではなく)常に新しいページ内容が表示さ れる  HTMLエディタとブラウザを統合することで実現可能  NISのパスワードを更新したとき、移動先で更新後のパスワー ドが利用できることを保証
  29. 29. 書き込み後読み取りの例 2013/6/28第7章:「一貫性とレプリケーション」29  書き込み後読み取り一貫性のあるデータストア  書き込み後読み取り一貫性のないデータストア
  30. 30. 読み取り後書き込み 2013/6/28第7章:「一貫性とレプリケーション」30  読み取り後書き込み(write-follow-read consistency)  前回のデータxに対するread操作に後続するxへのwrite操 作は、常に前回のread時と同じか、より新しい値に対し て行われることが保証されている  例:  掲示板(ネットニュース)への書き込みで、前回読み込んだ記 事Aへのレスポンス記事Bを書き込む場合  移動先でAが読める場合にのみBが書き込まれていることを保証
  31. 31. 読み取り後書き込みの例 2013/6/28第7章:「一貫性とレプリケーション」31  読み取り後書き込み一貫性のあるデータストア  読み取り後書き込み一貫性のないデータストア

×