コンテンツへスキップ
uencoder

CAP Theorem

CAP 定理とは、ネットワーク分断が発生した場合、分散システムは一貫性 (C) と可用性 (A) のどちらか一方しか満たせず、3 つを同時に成立させることはできないという定理である。

目的

分散システムの根源的なトレードオフを明らかにし、データストア選定の指針とする。

メカニズム

一貫性は全ノードが同じビューを見ること、可用性はすべてのリクエストが応答を得ること、分断耐性は分断下でも動作し続けることを指す。分断は避けられないため、実際の選択は CP(強い一貫性)と AP(高可用性)の間になる。CP の例は ZooKeeper や Spanner、AP の例は Cassandra や DynamoDB である。

ユースケース

  • 分散ストレージの選定
  • マイクロサービスのデータアーキテクチャ
  • マルチリージョン展開の戦略
  • 整合性と可用性のトレードオフ

例

  • 入力
    During a network partition
    Output
    Choose 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

関連用語

References