更新時間:2023-06-09 來源:黑馬程序員 瀏覽量:
2000年,Eric Brewer在ACM PODC分布式計算原理專題討論會上首次提出CAP原則。后來,麻省理工學院的兩位科學家(賽斯·吉爾伯特和南希·林奇)證明了CAP原則的正確性。目前,CAP原則被大型公司廣泛采納,例如Amazon公司。
CAP原則又稱CAP定理,它包括一致性(Consistency)、可用性(Availability)和分區(qū)容錯性(Partition Tolerance)三大要素,三大要素的介紹具體如下;
·一致性:系統(tǒng)在執(zhí)行過某項操作后,仍然處于一致的狀態(tài)。在分布式系統(tǒng)中,更新操作執(zhí)行成功后所有的用戶都應(yīng)該讀取到最新的值,這樣的系統(tǒng)被認為具有一致性。
·可用性:每一個操作總是能夠在一定的時間內(nèi)返回結(jié)果,這里需要注意的是“一定時間內(nèi)”和“返回結(jié)果”,也就是說系統(tǒng)的結(jié)果必須在給定的時間內(nèi)返回,若超時,則被認為是不可用的。
·分區(qū)容錯性:系統(tǒng)存在網(wǎng)絡(luò)分區(qū)的情況下,仍然可以接受請求(即滿足一致性和可用性)。網(wǎng)絡(luò)分區(qū)指的是由于某種原因網(wǎng)絡(luò)被分成若干個孤立的區(qū)域,而區(qū)域之間互不相通。分區(qū)容錯性可理解為系統(tǒng)對結(jié)點動態(tài)加人和離開的處理能力,因為結(jié)點的加入和離開可認為是集群內(nèi)部的網(wǎng)絡(luò)分區(qū)。
CAP原則中,一個分布式系統(tǒng)中最多可同時實現(xiàn)上述的兩個要素,不可同時實現(xiàn)三個要素,具體如圖所示。
從圖中可以看出,CAP原則最多可以同時實現(xiàn)兩個要素,即AP、CP或AC,不存在同時實現(xiàn)三個要素的情形,即CAP。若是分布式系統(tǒng)中的數(shù)據(jù)無副本的話,系統(tǒng)必然會滿足一致性(因為只有單獨的數(shù)據(jù),不會出現(xiàn)數(shù)據(jù)不一致的情況);若是分布式系統(tǒng)中出現(xiàn)了網(wǎng)絡(luò)分區(qū)狀況或者宕機,則必然會導(dǎo)致某些數(shù)據(jù)不可以訪問,此時就不能滿足可用性要素,即在此情況下獲得了CP系統(tǒng),但是CAP是不可同時滿足的。
接下來,我們通過一張表來描述CAP原則的取舍策略與應(yīng)用場景,具體如表所示。
選擇CA策略,意味著放棄P,也就是說,保證了系統(tǒng)的一致性和可用性,卻違背了分布式系統(tǒng)的分區(qū)容錯性;選擇CP策略,意味著放棄A,也就是說,保證了系統(tǒng)的一致性和分區(qū)容錯性,但用戶的體驗較差,即當系統(tǒng)宕機時,需要等待所有結(jié)點的數(shù)據(jù)一致時,用戶才可訪問系統(tǒng);選擇AP策略,意味著放棄C.也就是說,保證了系統(tǒng)的可用性和分區(qū)容錯性,但是結(jié)點之間的數(shù)據(jù)會出現(xiàn)不一致的現(xiàn)象。因此,我們可以根據(jù)自已的需求,選擇對應(yīng)的策略。