一、分布式系統的CAP理論是什么
分布式系統的構建有一個重要理論——CAP理論,這一理論的出現深刻影響著分布式系統的發展和設計,那么什么是CAP理論呢?
CAP理論是加州理工大學伯克利分校的Eric Brewer教授在2000年7月的ACMPODC會議上首次提出的,它是Eric Brewer在Inktomi期間研發搜索引擎、分布式Web緩存時得出的關于數據一致性(C:Consistency)、服務可用性(A:Availability)、分區容錯性(P:Partition-tolerance)的一個猜想。
在這個猜想提出的2年以后,來自麻省理工學院的Seth Gilbert和Nancy Lynch從理論上證明了Eric Brewer教授的CAP猜想是成立的,從此,CAP理論在學術上正式成為了分布式領域公認的定理,并深刻影響著分布式系統的發展。
CAP理論告訴我們, 一個分布式系統不可能同時滿足數據一致性、服務可用性和分區容錯性這三個基本需求,最多只能同時滿足其中的兩個。

二、分布式系統CAP特性如何取舍
分布式系統的CAP理論告訴我們,分布式系統只能滿足CAP中的兩個需求,那么舍棄哪一個比較好呢?
1、滿足CA舍棄P,也就是滿足一致性和可用性,舍棄容錯性。但是這也就意味著你的系統不是分布式的了,因為涉及分布式的想法就是把功能分開,部署到不同的機器上。
2、滿足CP舍棄A,也就是滿足一致性和容錯性,舍棄可用性。如果你的系統允許有段時間的訪問失效等問題,這個是可以滿足的。就好比多個人并發買票,后臺網絡出現故障,你買的時候系統就崩潰了。
3、滿足AP舍棄C,也就是滿足可用性和容錯性,舍棄一致性。這也就是意味著你的系統在并發訪問的時候可能會出現數據不一致的情況。
實時證明,大多數都是犧牲了一致性:就好比是你買火車票,本來你看到的是還有一張票,其實在這個時刻已經被買走了,你填好了信息準備買的時候發現系統提示你沒票了,這就是犧牲了一致性。
但是不是說犧牲一致性一定是最好的,就好比張三給李四轉了100塊錢,這時候必須保證張三的賬戶上少了100,李四的賬戶多了100,因此需要數據的一致性,而且什么時候轉錢都可以,也需要可用性,但是轉錢失敗是可以允許的,即可以舍棄容錯性。