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

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