CAP Theorem

CAP 定理說明在分散式系統中,一致性(Consistency)、可用性(Availability)和分區容忍性(Partition Tolerance)三者最多只能同時滿足兩個。

三個特性

Consistency(一致性)

確保每個節點(Node)的資料都一樣。所有節點在同一時間看到的資料是相同的。

Availability(可用性)

每次向資料庫伺服器發出請求(Request),都可以取得回應(Response),但不保證回應為最新的資料。

Partition Tolerance(分區容忍性)

當節點之間的網路發生分區(無法通訊)時,系統仍能繼續運作。

策略選擇

在實際應用中,由於網路分區是不可避免的,因此必須在 CP 或 AP 之間做選擇。

CP(Consistency + Partition Tolerance)

犧牲可用性的分散式資料庫。

  • 特性:在網路分區發生時,優先保證資料一致性,可能會拒絕部分請求
  • 適用情境:貼文系統、訊息系統等需要強一致性的場景
  • 代表:Google BigTable、MongoDB、分散式 RDBMS

AP(Availability + Partition Tolerance)

犧牲一致性的分散式資料庫。

  • 特性:在網路分區發生時,優先保證可用性,允許各節點暫時有不同的資料
  • 適用情境:按讚系統、社交媒體 feed 等可接受最終一致性的場景
  • 代表:Amazon DynamoDB、Cassandra

CA(Consistency + Availability)

犧牲分區容忍性的資料庫。

  • 特性:當網路分區發生時無法繼續運作
  • 適用情境:單機或經過 Sharding 的資料庫(不能承受單機損壞)
  • 注意:違反了分散式架構的初衷,基本上不會存在於真正的分散式系統中

相關主題