如果我們期待實現(xiàn)一套嚴(yán)格滿足ACID(Atomicity原子性、Consistency一致性、Isolation隔離性、Durability持久性)的分布式事務(wù),很可能的情況就是系統(tǒng)的可用性和嚴(yán)格一致性出現(xiàn)沖突。在可用性和一致性之間永遠(yuǎn)無法存在一個兩全其美的方案。
CAP定理
2000年7月,加州大學(xué)伯克利分校Eric Brewer教授提出了著名的CAP猜想。2年后,來自麻省理工學(xué)院的Seth Gilbert和Nancy Lynch從理論上證明了CAP,從此CAP定理成為了分布式計算領(lǐng)域公認(rèn)的定理。
CAP理論告訴我們:一個分布式系統(tǒng)不可能同時滿足一致性(C:Consistency)、可用性(A:Availability)、分區(qū)容錯性(P:Partition tolerance)這三個基本需求,并且最多只能滿足其中的兩項。
CAP猜想:http://www.cs.berkeley.edu/~brewer/cs262b-2004/PODC-keynote.pdf
CAP證明:http://lpd.epfl.ch/sgilbert/pubs/BrewesConjecture-SigAct.pdf
對于一個分布式系統(tǒng)來說,分區(qū)容錯是基本需求否則不能稱為分布式系統(tǒng)。因此架構(gòu)師需要在C和A之間尋求平衡。
Base理論
Base = Basically Available+Soft state+Eventually consistent 基本可用性+軟狀態(tài)+最終一致性,由eBay架構(gòu)師Dan Pritchett提出。Base是對CAP中一致性和可用性權(quán)衡的結(jié)果,源于提出者自己在大規(guī)模分布式系統(tǒng)上實踐的總結(jié)。核心思想是無法做到強一致性,但每個應(yīng)用都可以根據(jù)自身的特點,采用適當(dāng)方式達(dá)到最終一致性。
基本可用:可響應(yīng)時間可損失、可功能損失。
軟狀態(tài):允許系統(tǒng)數(shù)據(jù)存在中間狀態(tài),但不會影響到系統(tǒng)的整體可用性,即允許系統(tǒng)在不同節(jié)點的數(shù)據(jù)副本之間進(jìn)行數(shù)據(jù)同步時存在延時。
最終一致性:要求系統(tǒng)數(shù)據(jù)副本最終能夠一致,而不需要實時保證數(shù)據(jù)副本一致。
最終一致性有5個變種:因果一致性、讀己之所寫(因果一致性特例)、會話一致性、單調(diào)讀一致性、單調(diào)寫一致性。在實際系統(tǒng)實踐中,可以將若干變種結(jié)合起來。