Slide 1

Slide 1 text

一貫性と可用性によるシステムの分類 ryotaro612 February 10, 2025

Slide 2

Slide 2 text

目次 1. Jepsen 2. 一貫性と可用性のパターン 1

Slide 3

Slide 3 text

Jepsen: 分散システムのテストフレームワーク6 Jepsenはフォールトインジェクションに特化 ∘ Clojure のライブラリ ∘ テストケースは次の Protocol4 の実装 ∘ 分散システムのクライアント ∘ 起こしたい障害 ∘ クライアントの操作と障害のスケジュール ∘ 実行結果の確認 ∘ Jepsen に実装の呼出、実行履歴の管理、再現を移譲 2

Slide 4

Slide 4 text

Jepsenの認知度 テストしたシステムの数は457 ∘ テスト対象の例 ∘ etcd ∘ PostgresSQL ∘ MongoDB ∘ Elasticsearch ∘ Cassandra ∘ テスト対象の etcd から Jepsen への言及もある10 3

Slide 5

Slide 5 text

テスト対象を評価するときの課題 どの一貫性と可用性のペアなら実装できるのか CAP 定理の問題 ∘ CAP 定理3 の一貫性は線形化可能性5 ∘ 線形化可能性以外の一貫性のモデルは対象外 ∘ トリレンマではない。一貫性と可用性のトレードオフ2 ∘ ネットワーク障害時の一貫性と可用性の優先度を問う ∘ 二者択一ではない。複数の候補がある ∘ 複数の矛盾する可用性の定義9 4

Slide 6

Slide 6 text

目次 1. Jepsen 2. 一貫性と可用性のパターン 5

Slide 7

Slide 7 text

Highly Available Transactions Virtues and Limitations1 一貫性と両立できる可用性のペアを半順序関係に整理 ∘ ネットワークの無期限の分断を前提 ∘ ノードは一貫性を表現 ∘ 無枠は high availability, 青枠は Sticky availabilitya ∘ 楕円は実現できないペア ∘ Jepsen のサイトに一貫性の 解説がある8 a意味は後述 一貫性と可用性のペアの強さ1 6

Slide 8

Slide 8 text

2つの可用性 Sticky availabilityはHigh availablityの必要条件 Sticky Availability 1. クライアントによる過去の全操作を反映したレプリカがある 2. クライアントが上のレプリカにトランザクションを実行する 3. クライアントに応答が返る High Availability 1. 1 つ以上の正常なサーバがある 2. 上の 1 つにリクエストを送る 3. クライアントに応答が返る どちら可用性も応答にかかる時間は問わない 7

Slide 9

Slide 9 text

関係のあるペアの例 WFRとcausalには強さに関係がある WFR (Writes Follow Reads, high availability) 1. プロセスがトランザクション 𝑇1 をコミット 2. 次に 𝑇2 をコミット 3. 別のプロセスは 𝑡2 の結果を 𝑡1 の結果より前に参照できない causal (sticky availability) 1. 因果関係のある操作の結果がすべてのプロセスから同じ順序 で観測される 2. 因果関係のない操作の観測順序は同一とは限らない 8

Slide 10

Slide 10 text

参考資料 [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

Slide 11

Slide 11 text

参考資料 [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

Slide 12

Slide 12 text

参考資料 [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