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 的資料庫(不能承受單機損壞)
- 注意:違反了分散式架構的初衷,基本上不會存在於真正的分散式系統中