對于關系型數(shù)據(jù)庫,要求更新過的數(shù)據(jù)能被后續(xù)的訪問都能看到,這是強一致性。
如果能容忍后續(xù)的部分或者全部訪問不到,則是弱一致性。
如果經(jīng)過一段時間后要求能訪問到更新后的數(shù)據(jù),則是最終一致性。
CAP中說,不可能同時滿足的這個一致性指的是強一致性。
CA without P
分布式環(huán)境下,分區(qū)是必然的,所以如果舍棄P,意味著要舍棄分布式系統(tǒng)
CP without A
如果一個分布式系統(tǒng)不要求強的可用性,即容許系統(tǒng)停機或者長時間無響應的話,就可以在CAP三者中保障CP而舍棄A。
AP wihtout C
要高可用并允許分區(qū),則需放棄一致性。一旦網(wǎng)絡問題發(fā)生,節(jié)點之間可能會失去聯(lián)系。為了保證高可用,需要在用戶訪問時可以馬上得到返回,則每個節(jié)點只能用本地數(shù)據(jù)提供服務,而這樣會導致全局數(shù)據(jù)的不一致性。
孰優(yōu)孰略,沒有定論,只能根據(jù)場景定奪,適合的才是最好的。
對于涉及到錢財這樣不能有一絲讓步的場景,C必須保證。網(wǎng)絡發(fā)生故障寧可停止服務,這是保證CP,舍棄A。比如前幾年支付寶光纜被挖斷的事件,在網(wǎng)絡出現(xiàn)故障的時候,支付寶就在可用性和數(shù)據(jù)一致性之間選擇了數(shù)據(jù)一致性,用戶感受到的是支付寶系統(tǒng)長時間宕機,但是其實背后是無數(shù)的工程師在恢復數(shù)據(jù),保證數(shù)數(shù)據(jù)的一致性。
對于其他場景,比較普遍的做法是選擇可用性和分區(qū)容錯性,舍棄強一致性,退而求其次使用最終一致性來保證數(shù)據(jù)的安全。
全稱:Basically Available(基本可用),Soft state(軟狀態(tài)),和 Eventually consistent(最終一致性)三個短語的縮寫
Base 理論是對 CAP 中一致性和可用性權衡的結果,其來源于對大型互聯(lián)網(wǎng)分布式實踐的總結,是基于 CAP 定理逐步演化而來的。其核心思想是:
既是無法做到強一致性(Strong consistency),但每個應用都可以根據(jù)自身的業(yè)務特點,采用適當?shù)姆绞絹硎瓜到y(tǒng)達到最終一致性(Eventual consistency)。
總結
總的來說,BASE 理論面向的是大型高可用可擴展的分布式系統(tǒng),和傳統(tǒng)事務的 ACID 是相反的,它完全不同于 ACID 的強一致性模型,而是通過犧牲強一致性來獲得可用性,并允許數(shù)據(jù)在一段時間是不一致的。