CAP Theorem
CAP 定理とは、ネットワーク分断が発生した場合、分散システムは一貫性 (C) と可用性 (A) のどちらか一方しか満たせず、3 つを同時に成立させることはできないという定理である。
目的
分散システムの根源的なトレードオフを明らかにし、データストア選定の指針とする。
メカニズム
一貫性は全ノードが同じビューを見ること、可用性はすべてのリクエストが応答を得ること、分断耐性は分断下でも動作し続けることを指す。分断は避けられないため、実際の選択は CP(強い一貫性)と AP(高可用性)の間になる。CP の例は ZooKeeper や Spanner、AP の例は Cassandra や DynamoDB である。
ユースケース
- 分散ストレージの選定
- マイクロサービスのデータアーキテクチャ
- マルチリージョン展開の戦略
- 整合性と可用性のトレードオフ
例
- 入力
During a network partitionOutputChoose C (reject inconsistency) or A (allow it)CP vs AP
よくあるエラー
- Believing all three of CAP can be satisfied simultaneously
- Partitions are unavoidable; choose between CP and AP