一、分布式系統的CAP理論是什么
分布式系統的構建有一個重要理論——CAP理論,這一理論的出現深刻影響著分布式系統的發(fa)展(zhan)和設(she)計(ji),那么什么是CAP理論呢?
CAP理(li)論是加州理(li)工(gong)大學伯克利分校的Eric Brewer教授(shou)在2000年(nian)7月(yue)的ACMPODC會議上首次提出的,它是Eric Brewer在Inktomi期間研(yan)發(fa)搜索引(yin)擎、分布(bu)式Web緩存時得(de)出的關于數據一致性(C:Consistency)、服(fu)務可(ke)用性(A:Availability)、分區(qu)容錯性(P:Partition-tolerance)的一個猜想。
在這個(ge)猜(cai)(cai)想(xiang)提出的(de)2年以后,來自(zi)麻省理(li)工學(xue)院的(de)Seth Gilbert和(he)Nancy Lynch從理(li)論(lun)上(shang)證明了Eric Brewer教授的(de)CAP猜(cai)(cai)想(xiang)是成立(li)的(de),從此,CAP理(li)論(lun)在學(xue)術上(shang)正式(shi)成為(wei)了分布式(shi)領域公認的(de)定理(li),并深刻影響(xiang)著分布式(shi)系統(tong)的(de)發展。
CAP理論(lun)告(gao)訴(su)我們, 一(yi)個分布(bu)式(shi)系統不可能同(tong)時滿足(zu)數據一(yi)致性、服務(wu)可用性和分區容錯(cuo)性這(zhe)三個基本需(xu)求,最多只能同(tong)時滿足(zu)其中的兩(liang)個。
二、分布式系統CAP特性如何取舍
分布式系統的CAP理論告訴我們,分布式系統只(zhi)能滿足CAP中的(de)兩(liang)個需求,那么舍棄(qi)哪(na)一個比較好呢?
1、滿足CA舍棄(qi)P,也就(jiu)是滿足一致性(xing)和可用性(xing),舍棄(qi)容(rong)錯(cuo)性(xing)。但是這也就(jiu)意味著你的(de)系(xi)統不(bu)是分(fen)布(bu)式的(de)了,因為涉及分(fen)布(bu)式的(de)想法就(jiu)是把功能分(fen)開(kai),部署到(dao)不(bu)同(tong)的(de)機器上。
2、滿足CP舍(she)棄A,也就是滿足一(yi)致性和(he)容錯性,舍(she)棄可用性。如果你的(de)系統(tong)允許有段時間的(de)訪問失效等問題(ti),這個(ge)是可以(yi)滿足的(de)。就好(hao)比多個(ge)人并(bing)發買票,后臺(tai)網絡(luo)出現故障,你買的(de)時候系統(tong)就崩潰了。
3、滿足(zu)AP舍棄C,也就(jiu)是滿足(zu)可(ke)用性(xing)和容錯(cuo)性(xing),舍棄一致性(xing)。這也就(jiu)是意味著你的系統在并發訪問(wen)的時候可(ke)能會出現數據不一致的情況(kuang)。
實時證明(ming),大(da)多數都是(shi)(shi)犧牲了一(yi)(yi)致性:就好比是(shi)(shi)你買火車票,本(ben)來你看到的是(shi)(shi)還有(you)一(yi)(yi)張票,其(qi)實在(zai)這個時刻已經被買走了,你填好了信息準備買的時候發現系統提示你沒票了,這就是(shi)(shi)犧牲了一(yi)(yi)致性。
但是(shi)不(bu)是(shi)說犧(xi)牲一致性(xing)一定是(shi)最好的(de),就好比張(zhang)三給李四(si)轉了(le)100塊錢,這時(shi)候必須保(bao)證(zheng)張(zhang)三的(de)賬戶上少了(le)100,李四(si)的(de)賬戶多了(le)100,因此需要(yao)(yao)數據的(de)一致性(xing),而(er)且(qie)什么時(shi)候轉錢都可以(yi),也(ye)需要(yao)(yao)可用性(xing),但是(shi)轉錢失敗是(shi)可以(yi)允許的(de),即可以(yi)舍(she)棄容錯性(xing)。