BASE
BASE:Basically Available(基本可用),Soft state(軟狀態(tài)), Eventually consistent(最終一致性)。
Base 理論是對 CAP 中一致性和可用性權(quán)衡的結(jié)果,其來源于對大型互聯(lián)網(wǎng)分布式實踐的總結(jié),是基于 CAP 定理逐步演化而來的。其核心思想是:
既然無法做到強一致性(Strong consistency),但每個應(yīng)用都可以根據(jù)自身的業(yè)務(wù)特點,采用適當?shù)姆绞絹硎瓜到y(tǒng)達到最終一致性(Eventual consistency)。
Basically Available(基本可用)
什么是基本可用呢?假設(shè)系統(tǒng),出現(xiàn)了不可預(yù)知的故障,但還是能用,相比較正常的系統(tǒng)而言:
- 響應(yīng)時間上的損失:正常情況下的搜索引擎 0.5 秒即返回給用戶結(jié)果,而基本可用的搜索引擎可以在 1 秒作用返回結(jié)果。
- 功能上的損失:在一個電商網(wǎng)站上,正常情況下,用戶可以順利完成每一筆訂單,但是到了大促期間,為了保護購物系統(tǒng)的穩(wěn)定性,部分消費者可能會被引導(dǎo)到一個降級頁面。
Soft state(軟狀態(tài))
什么是軟狀態(tài)呢?相對于原子性而言,要求多個節(jié)點的數(shù)據(jù)副本都是一致的,這是一種 “硬狀態(tài)”。
軟狀態(tài)指的是:允許系統(tǒng)中的數(shù)據(jù)存在中間狀態(tài),并認為該狀態(tài)不影響系統(tǒng)的整體可用性,即允許系統(tǒng)在多個不同節(jié)點的數(shù)據(jù)副本存在數(shù)據(jù)延時。
Eventually consistent(最終一致性)
上面說軟狀態(tài),然后不可能一直是軟狀態(tài),必須有個時間期限。在期限過后,應(yīng)當保證所有副本保持數(shù)據(jù)一致性。從而達到數(shù)據(jù)的最終一致性。這個時間期限取決于網(wǎng)絡(luò)延時,系統(tǒng)負載,數(shù)據(jù)復(fù)制方案設(shè)計等等因素。
最終一致性分為 5 種
- 因果一致性(Causal consistency)
指的是:如果節(jié)點 A 在更新完某個數(shù)據(jù)后通知了節(jié)點 B,那么節(jié)點 B 之后對該數(shù)據(jù)的訪問和修改都是基于 A 更新后的值。于此同時,和節(jié)點 A 無因果關(guān)系的節(jié)點 C 的數(shù)據(jù)訪問則沒有這樣的限制。 - 讀己之所寫(Read your writes)
這種就很簡單了,節(jié)點 A 更新一個數(shù)據(jù)后,它自身總是能訪問到自身更新過的最新值,而不會看到舊值。其實也算一種因果一致性。 - 會話一致性(Session consistency)
會話一致性將對系統(tǒng)數(shù)據(jù)的訪問過程框定在了一個會話當中:系統(tǒng)能保證在同一個有效的會話中實現(xiàn) “讀己之所寫” 的一致性,也就是說,執(zhí)行更新操作之后,客戶端能夠在同一個會話中始終讀取到該數(shù)據(jù)項的最新值。 - 單調(diào)讀一致性(Monotonic read consistency)
單調(diào)讀一致性是指如果一個節(jié)點從系統(tǒng)中讀取出一個數(shù)據(jù)項的某個值后,那么系統(tǒng)對于該節(jié)點后續(xù)的任何數(shù)據(jù)訪問都不應(yīng)該返回更舊的值。 - 單調(diào)寫一致性(Monotonic write consistency)
指一個系統(tǒng)要能夠保證來自同一個節(jié)點的寫操作被順序的執(zhí)行。
然而,在實際的實踐中,這 5 種系統(tǒng)往往會結(jié)合使用,以構(gòu)建一個具有最終一致性的分布式系統(tǒng)。實際上,不只是分布式系統(tǒng)使用最終一致性,關(guān)系型數(shù)據(jù)庫在某個功能上,也是使用最終一致性的,比如備份,數(shù)據(jù)庫的復(fù)制過程是需要時間的,這個復(fù)制過程中,業(yè)務(wù)讀取到的值就是舊的。當然,最終還是達成了數(shù)據(jù)一致性。這也算是一個最終一致性的經(jīng)典案例。