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

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