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

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