Upgrade to Pro — share decks privately, control downloads, hide ads and more …

5.4 リーダーレスレプリケーション

koyamaso
May 21, 2021
130

5.4 リーダーレスレプリケーション

「データ指向アプリケーションデザイン」輪講資料

補足

Amazon DynamoDBはトランザクション対応していました

https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/transaction-apis.html

koyamaso

May 21, 2021
Tweet

Transcript

  1. 目次 レプリケーション レプリケーションのアプローチ リーダーレスレプリケーション DynamoDB概要 DynamoDBを構成する技術 Consistent Hashing DynamoDBにおけるレプリケーション DynamoDBの一貫性

    モノトニックな読み取り一貫性 自分が書いた内容の読み取り一貫性 ノードがダウンしている状態での書き込み 読み取り修復(Read repair) 反エントロピー(Anti-entropy)処理 読み書きのためのクオラム(Quorum) いい加減なクオラムとヒント付きのハンドオフ クオラムの一貫性の限界
  2. DynamoDBを構成する技術 問題 技術 Partitioning Consistent Hashing High Availability for writes

    Vector clocks with reconciliation during reads Handling temporary failures Sloppy Quorum and hinted handoff Recovering from permanent failures Anti-entropy using Merkle trees Membership and failure detection Gossip-based membership protocol and failure detection このうち一部を紹介する
  3. Consistent Hashing ハッシュ関数hを使ってキーを特定の範囲にマッピ ングする(x , x ...) ノードもマッピングする(s , s

    ...) 各ノードは、隣のノードまでの間にあるキーを管 理する ノードの追加削除をO(K/N + logN)で出来る あるキーxを管理しているノードをxのcoordinator と呼ぶ https://web.stanford.edu/class/cs168/l/l1.pdf より引用 0 1 0 1
  4. DynamoDBの一貫性 モデル 保証しているか? Strict consistency(厳密な一貫性) x Sequential consistency(逐次一貫性) x Causal

    consistency(因果一貫性) x Eventual consistency (結果整合性) o 結果整合性とは、複製に非常に長い時間がかからない場合、すべてのレプリカが最終的に一貫性を持つよう になることを保証する性質 他の性質と比較して弱い Data-centric consistency models(データ中心一貫性モデル)から見たDynamoDBが保証する性質
  5. DynamoDBの一貫性(2) モデル 保証しているか? Monotonic read consistency △ ※ Monotonic write

    consistency x Read-your-writes consistency △ ※ Writes-follows-reads consistency x ※ オプションで強い読み込み一貫性を指定できる https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadConsistency.html Client-centric consistency models(クライアント中心一貫性モデル)から見たDynamoDBが保証する性質
  6. モノトニックな読み取り一貫性 Monotonic read consistencyを保証していないと一度読み取ったデータが削除されたように見えることがある Write X X exists? Yes X

    exists? No Sync X X exists? Yes 誰かが連続して行った複数の読み取りにおいて、時間が巻き戻らないことの保証
  7. 読み取り修復(Read repair) 古い値を返してきたレプリカに新しい値を書き戻す。頻繁に書き換わる値において有効 Write X X exists? No Yes Offline

    Write X 結果整合性を保証しているシステムでは、最終的に全てのレプリカにデータを複製する必要がある