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