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

Highly Available Transactions: Virtues and Limi...

Ryotaro
February 10, 2025

Highly Available Transactions: Virtues and Limitations

Ryotaro

February 10, 2025
Tweet

More Decks by Ryotaro

Other Decks in Technology

Transcript

  1. Jepsen: 分散システムのテストフレームワーク6 Jepsenはフォールトインジェクションに特化 ∘ Clojure のライブラリ ∘ テストケースは次の Protocol4 の実装

    ∘ 分散システムのクライアント ∘ 起こしたい障害 ∘ クライアントの操作と障害のスケジュール ∘ 実行結果の確認 ∘ Jepsen に実装の呼出、実行履歴の管理、再現を移譲 2
  2. Jepsenの認知度 テストしたシステムの数は457 ∘ テスト対象の例 ∘ etcd ∘ PostgresSQL ∘ MongoDB

    ∘ Elasticsearch ∘ Cassandra ∘ テスト対象の etcd から Jepsen への言及もある10 3
  3. テスト対象を評価するときの課題 どの一貫性と可用性のペアなら実装できるのか CAP 定理の問題 ∘ CAP 定理3 の一貫性は線形化可能性5 ∘ 線形化可能性以外の一貫性のモデルは対象外

    ∘ トリレンマではない。一貫性と可用性のトレードオフ2 ∘ ネットワーク障害時の一貫性と可用性の優先度を問う ∘ 二者択一ではない。複数の候補がある ∘ 複数の矛盾する可用性の定義9 4
  4. Highly Available Transactions Virtues and Limitations1 一貫性と両立できる可用性のペアを半順序関係に整理 ∘ ネットワークの無期限の分断を前提 ∘

    ノードは一貫性を表現 ∘ 無枠は high availability, 青枠は Sticky availabilitya ∘ 楕円は実現できないペア ∘ Jepsen のサイトに一貫性の 解説がある8 a意味は後述 一貫性と可用性のペアの強さ1 6
  5. 2つの可用性 Sticky availabilityはHigh availablityの必要条件 Sticky Availability 1. クライアントによる過去の全操作を反映したレプリカがある 2. クライアントが上のレプリカにトランザクションを実行する

    3. クライアントに応答が返る High Availability 1. 1 つ以上の正常なサーバがある 2. 上の 1 つにリクエストを送る 3. クライアントに応答が返る どちら可用性も応答にかかる時間は問わない 7
  6. 関係のあるペアの例 WFRとcausalには強さに関係がある WFR (Writes Follow Reads, high availability) 1. プロセスがトランザクション

    𝑇1 をコミット 2. 次に 𝑇2 をコミット 3. 別のプロセスは 𝑡2 の結果を 𝑡1 の結果より前に参照できない causal (sticky availability) 1. 因果関係のある操作の結果がすべてのプロセスから同じ順序 で観測される 2. 因果関係のない操作の観測順序は同一とは限らない 8
  7. 参考資料 [1] Peter Bailis et al. ``Highly available transactions: virtues

    and limitations''. In: Proc. VLDB Endow. 7.3 (Nov. 2013), pp. 181–192. issn: 2150-8097. doi: 10.14778/2732232.2732237. url: https://doi.org/10.14778/2732232.2732237. [2] Eric Brewer. ``CAP twelve years later: How the "rules" have changed''. In: Computer 45.2 (2012), pp. 23–29. doi: 10.1109/MC.2012.37. [3] Eric A. Brewer. ``Towards robust distributed systems (abstract)''. In: Proceedings of the Nineteenth Annual ACM Symposium on Principles of Distributed Computing. PODC '00. Portland, Oregon, USA: Association for Computing Machinery, 2000, p. 7. isbn: 1581131836. doi: 10.1145/343477.343502. url: https://doi.org/10.1145/343477.343502. 9
  8. 参考資料 [4] Clojure Protocols. url: https://etcd.io/blog/2020/jepsen-343-results/. [5] Maurice P. Herlihy

    and Jeannette M. Wing. ``Linearizability: a correctness condition for concurrent objects''. In: ACM Trans. Program. Lang. Syst. 12.3 (July 1990), pp. 463–492. issn: 0164-0925. doi: 10.1145/78969.78972. url: https://doi.org/10.1145/78969.78972. [6] Jepsen. 2025. url: https://jepsen.io/. [7] Jepsen Analysis. 2025. url: https://jepsen.io/analyses. [8] Jepsen Consistency Models. 2025. url: https://jepsen.io/consistency/models. 10
  9. 参考資料 [9] Martin Kleppmann. Designing Data-Intensive Applications. O'Reilly Media, Inc.,

    2017. [10] Latest Jepsen Results against etcd 3.4.3. 2020. url: https://etcd.io/blog/2020/jepsen-343-results/. 11