CAP定理與BASE理論
這里對分布式理論中的CAP定理與BASE理論進行介紹

CAP定理
基本原理
CAP定理(CAP Theorem),又被稱作布魯爾定理。其指出在一個分布式系統(tǒng)中,不可能同時滿足以下三點要求
1. Consistency 一致性
在分布式系統(tǒng)中訪問各節(jié)點副本時,數(shù)據(jù)是一致的。注意這里的一致性是強一致性
2. Availability 可用性
在分布式系統(tǒng)中訪問各節(jié)點時均可以獲得預(yù)期響應(yīng),即服務(wù)是可用的。但不保證返回的數(shù)據(jù)是最新的
3. Partition Tolerance 分區(qū)容錯
在一個分布式系統(tǒng)中當出現(xiàn)網(wǎng)絡(luò)異常或節(jié)點所在機器發(fā)生故障時,不可避免的會出現(xiàn)網(wǎng)絡(luò)分區(qū)。比如A、B兩個節(jié)點雖然各自都可以對外提供服務(wù),但A、B之間的網(wǎng)絡(luò)發(fā)生故障無法通信,即出現(xiàn)了分區(qū)。當發(fā)生網(wǎng)絡(luò)分區(qū)后,整個分布式系統(tǒng)依然需要繼續(xù)工作而不能就此停止,即所謂的分區(qū)容錯
至此可以看出對于一個分布式系統(tǒng)而言,網(wǎng)絡(luò)環(huán)境十分復(fù)雜,P是不可避免的、必須要保證的。那么當發(fā)生網(wǎng)絡(luò)分區(qū)時,是滿足Consistency一致性還是Availability可用性就成了一個問題
CP模型
當出現(xiàn)網(wǎng)絡(luò)分區(qū)時,滿足Consistency一致性。即CP模型,則系統(tǒng)會拒絕向其中寫入數(shù)據(jù)。因為一旦寫入,由于網(wǎng)絡(luò)分區(qū)無法同步即會出現(xiàn)各節(jié)點數(shù)據(jù)不一致的情況。但從系統(tǒng)各節(jié)點讀取數(shù)據(jù)時,不會出現(xiàn)不一致的情況。所以對于CP模型而言,其一致性是通過犧牲可用性來實現(xiàn)的
AP模型
當出現(xiàn)網(wǎng)絡(luò)分區(qū)時,滿足Availability可用性。即AP模型,則系統(tǒng)無論對于寫數(shù)據(jù)還是讀數(shù)據(jù)都會進行處理,以滿足可用性。同理,由于網(wǎng)絡(luò)分區(qū)無法進行數(shù)據(jù)同步,客戶端從不同節(jié)點進行數(shù)據(jù)訪問時,可能會出現(xiàn)結(jié)果不一致的情形。即可用性是通過犧牲一致性來實現(xiàn)的
Note
值得一提的是,CAP定理不是指分布式系統(tǒng)在任何條件下都必須在可用性、一致性中進行二選一。在未發(fā)生網(wǎng)絡(luò)分區(qū)的場景時,可用性和一致性是能夠同時保證的。CAP定理闡述的是當發(fā)生網(wǎng)絡(luò)分區(qū)時,即需要滿足P時,我們需要在C、A之間做出抉擇
BASE理論
Base理論是對CAP定理中AP模型的進一步發(fā)展,因為實際業(yè)務(wù)中很多分布式系統(tǒng)對于可用性的訴求相比較一致性會更高。故雖然不能保證CAP定理中的強一致性C,但分布式系統(tǒng)可以通過合適方式、手段來達到最終一致性
1. Basically Available 基本可用
當分布式系統(tǒng)發(fā)生不可預(yù)知的故障時,允許損失部分功能的可用性,保障核心功能的可用性,從而實現(xiàn)基本可用的目標。具體實現(xiàn)方式包括流量削峰、請求排隊、服務(wù)降級、服務(wù)熔斷等
2. Soft State 軟狀態(tài)
其指的是在保障基本可用性與最終一致性的要求下,系統(tǒng)中各節(jié)點的數(shù)據(jù)允許存在短暫的不一致。即所謂的中間過渡狀態(tài)。而這種短暫的不一致不會影響到服務(wù)的可用性
3. Eventually Consistent 最終一致性
不要求分布式系統(tǒng)的強一致性,即無法實時保證系統(tǒng)中各節(jié)點數(shù)據(jù)都是一致的。其允許在時間上存在有一定的延遲,以實現(xiàn)系統(tǒng)中各節(jié)點數(shù)據(jù)最終達到一致的狀態(tài)。當然具體地延遲時限取決于網(wǎng)絡(luò)延時、系統(tǒng)負載、數(shù)據(jù)同步方案等諸多因素
參考文獻
數(shù)據(jù)密集型應(yīng)用系統(tǒng)設(shè)計(DDIA) Martin Kleppmann著
