Distributed systems Principles and Paradigms 6. Consistency and Replication B4. グェン トアン ドゥク 1 全体の内容 Replication と Consistency Consistency models Distribution protocols Consistency protocols 2 1. Replication と Consistency Replicationとは? Replicationから生じる問題点 Consistencyとは? Replication as Scaling technique 3 Replicationとは? Replication(複製) Replicationの理由 同じデータを複数にコピーする Reliability(信頼性)を上げる Performanceを良くする 例 Web serverをreplicateする キャッシュ(memory, web pages…) 4 Replicationから生じる問題点 Replicationで信頼性と速度を得る しかし、色々な問題が出てくる 資源がかかる 管理が難しい Replicas(複製版)の間の矛盾性(inconsistency): あるreplicaでのupdateが他のreplicaまですぐ伝達で きない。その間にreplica毎に異なる 特にreplicas間の無矛盾性(consistency)が重要 5 Consistencyとは? Replicasの間の無矛盾性 正確に保つと困難 コストが大きい 物理法則にも違反!! 通信速度は光の速度を超えない 色々なモデルがある、モデルごとに consistencyの意味が違う 6 Replication as Scaling technique Scaling technique SystemのScaleに対する技術 Systemのサイズを大きくしても安全性、 performanceを保つ、分散しても小遅延など… Replicationはscaling techniqueの一つで ある。 データをそのデータを使用するプロセスの近く まで持つ… 7 2. Consistency models 2.1. Consistency model とは? 2.2. Data-centric consistency 2.3. Client-centric consistency 8 2.1. Consistency model とは? Consistencyは共有や複製したデータの read/write操作での問題 データの全体をdata storeと呼ぶ Distributed shared memory, distributed shared database, distributed file system…は皆data store である。 Consistency modelとは、processesとdata store の間の契約である。 各プロセスはある規則群を守ったら、data storeは正 しく動作する 9 Consistency model 普通、プロセスのread操作はそのデータの最後 のwrite操作の結果を返す。Distributed system(複数のreplicaと複数のプロセスがある) の場合にもこのことを実現したい。 しかし、distributed systemで正確なクコックを実 現するのは困難ので、どのwrite操作が最後の write操作か分からない。 その代わりに、色々なモデルがある モデル毎に、read操作の返す結果の制約が違う Read/write関係が厳密ほど使いやすいが、実現が難 しい 10 2.2. Data-centric consistency models Data storeについてのシステム全体の consistencyの表示を提供する Concurrent processesが同時にdata storeをupdate することが頻繁に起きると仮定している そのconcurrencyの上でconsistencyを保つ Data-centric consistency modelsの中でも、 色々な異なるサブモデルがある その厳密さ(strictness)により区別する 11 2.2.Data-centric consistency models Strict consistency Linearizability & Sequential consistency Causual consistency FIFO consistency Weak consistency Release consistency Entry consistency 12 Strict consistency(1) Strict consistencyモデルでは: あるデータxの全てのRead操作はそのデータの一番 最近のWrite操作で設定した値を返す(Any read on a data item x returns a value corresponding to the result of the most recent write on x) 当然の条件だと見える このモデルでは、most recent writeを正確に記 述ために、絶対のグローバルな時計が必要 13 Strict consistency(2) Distributed systemでは実現不可能 Machine Machine 1 T1 T2(>T1) Read(x) Write(x) 2 x Network ネットワークでの通信時間がかかるので、T1 < T2と しても、Machine 2では、WriteはReadより前に発行 14 Sequential & Linearizability Consistensy Sequential consistency 全ての命令実行(並列命令も含む)がある順序で実行 する時と同じ結果。しかも、同じプロセスの命令は書 かれた順序を保つ。 例: Wi(x)a: i番目のプロセスがxに値aを書き込む × ○ P1: W(x)a P2: W(x)b P3: R(x)b R(x)a P4: R(x)b R(x)a W(x)a W(x)b R(x)b R(x)a R(x)a R(x)b 時間 15 Linearizability consistency Sequential consistencyと同じ条件かつ、 各操作にtimestampが付いて、 tsOp1(x) < tsOp2(x) ⇒ Op1(x)はOp2(x)より 前に実行順序に出現する (tsOp1(x)は操作 Op1のtimestamp) Sequential consistencyより強い(厳しい) 16 Causal consistency(1) 因果関係のある事象(causally related) Read(x) … Write(x) (potentially causal related) Write(x) … Read(x) (causal related) Causal consistency: 因果関係のある可能なWritesは全てのプロセ スで同じ順序で見える。因果関係の可能性の ないWrites(concurrent writes)はどうでも良 い。 17 Causal consistency(2) 例 P1: W(x)a W(x)c P2: R(x)a W(x)b P3: R(x)a R(x)c R(x)b P4: R(x)a R(x)b R(x)c W1(x)a と W2(x)bは因果関係になる可能性がある. W2(x)b と W1(x)cは因果関係可能性がない。 上記の例はsequential consistencyを違反 18 FIFO consistency 同じプロセスのWritesは全てプロセスで書かれ た順序で見える。異なるプロセスのWritesは各プ ロセスで順序が違っても良い 例: P1: W(x)a P2: R(x)a W(x)b W(x)c P3: R(x)b R(x)a R(x)c P4: R(x)a R(x)b R(x)c 上記の例はcausal consistency を違反(W1(x)a と W2(x)bは因果関係可能性 がある) 19 Weak consistency(1) FIFO consistencyなどでは、あるプロセスでの Writesは全てのプロセスで同じ順序で見える。 そのWritesに関係ない (最終結果だけ関係ある)プロ セスにも影響される Weak consistencyは最終結果だけ伝播する。途 中の過程は伝播しない Synchronization variable を使う Synchronization variable Sにはsynchonizeとい う操作を適用すると、呼ぶプロセスのlocal データ は全部updateされる(最近の状態になる) 20 Weak consistency(2) Weak consistencyの性質: Synchronization variable のaccessはsequentially consistent (P1とP2が同時にsynchronize(S1), synchronize(S2)を呼ぶと、その2つ操作の順序は大 切ではない) Synchronization variableの操作を実行するために、 全てのcopiesで前のWritesが完了しなければならな い Synchronizeが完了する前に、read/writeが禁止され る 21 Weak consistency(3) Weak consistencyの例 P1: W(x)a W(x)b S P2: R(x)a R(x)b S P3: R(x)b R(x)a S Weak consistency違反の例 P1: W(x)a W(x)b S P2: S R(x)a 22 Release consistency(1) Weak consistencyではcritical regionに入ろうと するか、出ようとするか分からないので、local writesを全部伝播するかつ他からのwritesを全 部gatherする必要 Release consistencyでは、critical regionに入る ときに、Acquireという操作をして、出るときに Release操作をする。 Acquireすると、localデータはupdateされる Local updateを伝播する必要はない Releaseすると、local updateは伝播される Localデータがupdateされない 23 Release consistency(2) 例 P1: Acq(L) W(x)a W(x)b Rel(L) P2: P3: Acq(L) R(x)b Rel(L) R(x)a XはLでprotectedされているという Releaseするときに、updateを全て伝播する必要 はない(他のプロセスはそのデータをまだ使わな いかもしれない) そこで、Releaseのときに、updateを伝播しない。 他のプロセスがAcquireするときに、そのプロセス がupdateを集める Lazy Release Consistencyと呼ぶ 24 Entry consistency Release consistencyと似ているが、データ要素 毎に異なるsynchronization variableが永久に付 く。そのためAcquireとReleaseの時のコストが小 さい 保護されたデータを使いたいときに、そのデータ のLockをAcqquireをしなければならない。 例 P1: Acq(Lx) W(x)a Acq(Ly) W(y)b Rel(Lx) Rel(Ly) P2: P3: Acq(Lx) R(x)a R(y)NIL Acq(Ly) R(b)b 25 2.3. Client-centric consistency models データのupdateがあまり並列に行わない (競合状態にならない)data storeでは、非 常に弱いconsistency modelしか要らない。 そのモデルはeventual consistency modelと呼ぶ Eventual consistencyモデルを実現するた めに、client-centric consistency modelを 使う 26 Eventual consistency WWWでweb pagesが変わっても、proxyや cacheで変わらない(すぐ変える必要はない)。 しばらくの間に、だんだん最新の内容にupdate する。 Eventual consistency 矛盾性が大きい(high degree of inconsistency) しばらくの間、updateがなければだんだんconsistent になる(gradually become consistent) 27 Client-centric consistency(1) Eventual consistencyモデルでは、ある clientが異なるreplicaと交信すると異なる 結果が出てくる可能性がある それを解決するために、client-centric consistencyを紹介 Client-centric consistencyは単一のclient が data storeにaccessするときの無矛盾 性を保護する 28 Client-centric consistency(2) 記号: Xi[t]: local copy Liで時刻 tでのxの値 最初状態からtまでのWrite操作の集合をWS とする。 WS(x1[t1]): t1でL1のxの値がwriteされる WS(x1[t1];x2[t2]): L1, t1, xのwrite, L2, t2, xの writeがあった。 29 Client-centric consitency models Monotonic Reads Monotonic Writes Read Your Writes Writes Follow Reads 30 Monotonic Reads あるプロセスがxをreadしたら、その後の(そのプ ロセスの)xのreadが常に前回のreadより新鮮な 値を返す Monotonic Readsの例 L1: WS(x1) R(x1) L2: WS(x1;x2) R(x2) Monotonic Reads違反の例 L1: WS(x1) R(x1) L2: WS(x2) R(x2) WS(x1;x2) 31 Monotonic Writes あるプロセスのデータxのWrite操作はその プロセスの次のWrite(x)より前に完了する。 Monotonic Writesの例 L1: W(x1) L2: W(x1) W(x2) Monotonic Writes違反の例 L1: W(x1) L2: W(x2) 32 Read Your Writes あるプロセスのwriteの結果は常にその後の(同 じプロセスの)readに反映される Read Your Writesの例 L1: W(x1) L2: WS(x1;x2) R(x2) Read Your Writes違反の例 L1: W(x1) L2: WS(x2) R(x2) 33 Writes Follow Reads あるプロセスのread(x)の後にwrite(x)を実行し たら、常にWriteでのxはそのreadした時点の値 より新鮮な値でwriteが行う Writes Follow Readsの例 L1: WS(x1) R(x1) L2: WS(x1;x2) W(x2) Writes Follow Reads違反の例 L1: WS(x1) R(x1) L2: WS(x2) W(x2) 34 3. Distribution protocols 3.1. Replicaの配置 3.2. Update の伝播 3.3. Epidemic protocols 35 3.1. Replicaの配置 Permanent Replicas(永久のreplicas) Server-Initiated Replicas Replicasの初期集合 Distributed data storeから構成する Serverが開始したreplicas 多くのrequestが出されたところにreplicaを作る Client-Initiated Replicas Clientが開始したreplica(Cache) Clientと同じまたはLAN内のmachineなどで置かれる 36 Server-Initiated replicas: どれをreplicateするか Access counting: アクセス回数を記録する。 Thresholdを超えたらreplicate Pの近くのclientsがQに対してファイルFを要求してい る。その回数をcnt(P,F)とする。Cnt(P,F) > threshold なら、FをPにコピーする 37 3.2. Update propagation State vs. Operation Pull vs. Push Protocols Unicasting vs. Multicasting 38 State vs. Operations 何を伝播するか? Updateのnotificationだけ伝播する Invalidation protocols Updateされたデータをinvalidateする そのinvalidatedコピーに操作(write, read)がある とき実際のupdateをする。 データのコピーを伝播する Update操作を記録して、伝播する Write/read列を伝播するなど 39 Pull vs. Push protocols Push-based(server-based) protocols Clientが要求しなくてもupdateを伝播する Pull-based(client-based) protocols Serverあるいはclientが他のserverにupdate 伝播を要求する 40 Unicasting vs. Multicasting Unicasting N個のserversにupdateを伝播したいとき、N 個のmessagesを送る(serverごとに1つ) Multicasting N個のserversにupdateを伝播したいとき、1個 のmessageをmulticastする(multicasting serviceがあったら)。 41 3.3. Epidemic Protocols Eventual-consistency system のupdate の伝播はepidemic protocolsと呼ばれるア ルゴリズムのクラスを使って実現する Update Propagation Models(Updateの伝 播モデル) Removing data 42 Update Propagation Models 定義 Infective server(感染server): updateを持って、他の サーバに広げたいサーバ Susceptible server: まだupdateされないサーバ Removed server: もうupdateされた、updateを伝播 する志向のないサーバ 伝播モデル Anti-entropy Rumor speading (gossiping) 43 Anti-entropy あるサーバPがランダム的にサーバQを選んで、 updateをする. 3つの方法: P が自分のupdateをQにpushするだけ PがQからのupdateをpullするだけ PとQがupdateを交換する 感染サーバが多い時には、pushを使うと、 infective毎にsusceptibleを選べる確率が小さい ので、update伝播が遅い。Pullを使うと、 susceptibleがinfectiveを選べる確率が大きいの で、update完了が速い どの方法でも、infectiveが一個あると、しばらく全 てのサーバがupdateされる 44 Rumor Spreading(Gossiping) UpdateをもらったサーバPはランダムなサーバQを選んで、 updateを伝播する。もしQが既にそのupdateが分かった ら、Pのupdateのinterestを減らす(Pがremovedになる確 率を1/kだけ増やす) だんだんやるとPのupdateの伝播興味はなくなる。 Removedになる(Removed確率が1になったとき)。 Gossipingはupdateを速く広げるが、全部のサーバが updateされる保証はない。 s e ( k 1)(1 s ) 残りの率: K = 3: s < 0.02 45 Removing data Epidemicのside-effect: データの削除を広 げるのが難しい 削除したデータがupdateと間違って、再び保 存する 解決法: 削除したデータは記録する(death certificates を作る) 他のサーバにdeath certificatesを伝播する 46 4. Consistency Protocols Consistency protocolsはあるconsistencyモデル の実装を記述する Primay-based Protocols Replicated-write Protocols Remote-Write Protocols Local-Write Protocols Active Replication Quorum-based Protocols Cache-coherence Protocols 47 4.1.Primary-based Protocols Data storeの中のデータxはあるprimary に束縛され、そのprimaryがwrite(x)調整 する。 2種類ある Remote-write Protocols Local-write Protocols 48 Remote-write Protocols(1) 全てのread/write操作はある特定の (remote)serverで行われる ちょっと改良する ⇒ primary-backup protocols データはreplicateしない Writeは一つのサーバだけで行われるが、readは任 意のサーバでできる。Writeの後updateを伝播する必 要 Writeを開始したprocessは長く待たされる Sequential consistencyを容易に実現できる 49 Remote write protocol(2) Client W1 W4 Single Server for data item x W2 W3 Client x R1 R4 R2 R3 Data store W1: Write request R1: Read request W2: Forward request to server R2: Forward request to server W3: Acknowledge request completed R3, R4: response W4: Acknowledge request completed 50 Primary-backup protocol Client W1 W5 Primary server for item x W4 W3 W2 Client x R1 Backup server R2 W4 W3 W3 W4 W1: Write request R1: Read request W2: Forward request to server R2: Response Data store W3: Tell backup to update W4: Acknowledge update W5: Acknowledge write complete 51 Local-Write Protocols Writeがlocalで行われる 2つの種類ある: データが一つしかない(no replica) そのデータを自分のlocalまで持って、writeする Full migrationが必要 複数のデータがあるが、primaryでしかwrite できない。 Primaryを自分のlocalまで持って、writeする Non-blockなら、他のprocessがread可能 52 Local-write protocol(no replica) Client Current Server for item x x 1 New server for item x 4 2 3 1. Read or Write request 2. Forward request to current server for x 3. Move item x to client’s server 4. Return result of operation on client’s server Data store 53 Local write protocol(replicas) 54 4.2.Replicated-Write Protocols Write操作が複数のreplicasで行う可能 2種類ある Active Replication Quorum-based Protocols 55 Active Replication Replica毎に付き一つの特定プロセスがwriteを 担当 Updateはoperationで伝播。つまり、データは伝 播しない、operationだけ伝播する。 操作は全てプロセスで同じ順序で行う必要 Totally-ordered multicastが必要 Coordinatorまで操作列を送って、番号をつけてから、 他のプロセスに送る(sequencer) Relicated invocationが問題 Ojbect A invoke B.method, B.methodはC.methodを invoke, Bがreplicatedなら、C.methodは何回も invokeされる 56 Replicated invocationの解決法 BとCのcoordinatorを作る B.method()が呼ばれたら、Bの coordinatorまでforwadする。Coordinator で操作番号を付けて、invokeする。 Cの帰り値もCのcoordinatorが送る 57 Quorum-based Protocols Votingを使う 「Replicated itemをRead/Writeする前に複数のサーバ のpermissionを得なければならない」という仕組み 例:Distributed file systemでファイルがN個にreplicated あるファイルをwriteするために、[N/2]+1個のサーバのwrite許 可を得る。また、readのとき、version numberを[N/2]+1個の サーバから得て、全て同じならばOK. Read要求の途中で他からwriteできない([N/2]+1個の許可を得 られない)ので、常に最新のファイル 一般に、read quorum(Nr), write quorum(Nw)を設定、 それ以上許可があったらOK. Nr + Nw > N (read/write 競合を防ぐ) Nw > N/2 (write/write競合) 58 4.3.Cache-Coherence Protocols Cache-coherence protocolsはcacheがserverinitiated replicaとの無矛盾性を保つ方法を記述 Coherence dection strategy いつinconsistencyが実際にdetectする Static solution: 例とえば、compilerがやる Dynamic solution: runtime時にサーバがやる Coherence enforcement strategy どうやって無矛盾性を保つか Updateがあったら、serverがinvalidateを送る Updateを伝播する 59 まとめ Replicationとconsistencyを調べた Replicationで信頼性と高速が得られる しかし、consistencyを保護しなければなら ない Consistencyは色々モデルがある。モデル ごとにその意味が異なる Consistencyを実装するために、 consistency protocolsがある。 60
© Copyright 2024 ExpyDoc