AdSense

網頁

2019/6/26

分散式系統的CAP定理(CAP theorem)

在設計分散式系統(Distributed System)前,必須要了解CAP定理(CAP theorem),又稱布魯爾定理(Brewer's theorem)。

CAP定理的三個字母C,A,P分別代表以下:

  • Consistency:一致性
  • Availability:可用性
  • Partition-tolerance:分區容錯


Consistency 一致性

指分散式系統中的每個節點(nodes)所查到的都是一致且最新的資料。


Availability 可用性

在任何時候,每次向系統發出請求都能在合理的時間內獲得回應,但並不保證回應的資料為最新。


Partition-tolerance 分區容錯

當網路或節點故障造成系統的不同網路分區間(Partitions)的傳輸資料丟失時,系統仍可以正常運作。


滿足以上三種特性是一個完美的分散式系統欲達成的目標。


不過CAP定理指出,一個分散式系統最多只能滿足以上三個特性中的兩個,而無法同時滿足三個。

You can have at most two of these properties for any shared-data system


因此在設計分散式系統時,只能從三個特性中取捨,最多只能選擇兩點來滿足,有下列組合:

  • CP (Consistency and Partition Tolerant):一致性與分區容錯。
  • AP (Availability and Partition Tolerant):可用性與分區容錯。
  • CA (Consistency and Availability): 一致性與可用性。

CP (Consistent and Partition Tolerant)

在分區容錯的情況下保證資料的一致性,那就必須犧牲可用性。


AP (Availability and Partition Tolerant)

在分區容錯的情況下保證系統的可用性,那就必須犧牲資料的一致性。


CA (Consistent and Availability)

保證系統的可用性與資料一致,那就無法有分區容錯,也就是只有一個節點,這樣的情況就不是分散式系統了,不過這樣的系統可能並不存在


CAP定理的證明請參考Brewer’s Conjecture and the Feasibility of Consistent, Available, Partition-Tolerant Web Services

而分散式系統本身即為滿足分區容錯(P)的架構,也就是希望系統在部分節點或網路失靈的狀況下功能能可正常運作,因此通常是在CP與AP中作抉擇。



參考:

沒有留言:

AdSense