教育行業(yè)A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

BASE理論的三大要素指的是什么?

更新時間:2023年06月30日15時22分 來源:傳智教育 瀏覽次數(shù):

好口碑IT培訓

BASE理論是eBay的架構師Dan Pritchett在ACM上發(fā)表文章提出的,它是對CAP原則中一致性和可用性權衡的結果,也是對CAP原則的延伸。BASE理論的核心思想是即使無法保證系統(tǒng)的強一致性(strong consistency,即CAP的一致性就是強一致性),但每個應用都可以根據(jù)自身的業(yè)務特點,采用適當?shù)姆绞絹硎瓜到y(tǒng)達到最終一致性(eventual consistency)。

BASE理論與CAP原則類似,也包含三大要素,即基本可用(Basically Available)、軟狀態(tài)(Soft-State)和最終一致性(Eventually Consistent),具體含義如下:

• 基本可用,是指分布式系統(tǒng)在出現(xiàn)不可預知故障的時候,允許損失部分可用性,保證系統(tǒng)的核心可用即可。需要注意的是,基本可用不等價于系統(tǒng)不可用。

• 軟狀態(tài),也稱為弱狀態(tài),和硬狀態(tài)是相對的,它是指允許系統(tǒng)中的數(shù)據(jù)存在中間狀態(tài),并認為該中間狀態(tài)的存在不會影響系統(tǒng)的整體可用性,即允許系統(tǒng)在不同結點的數(shù)據(jù)副本之間進行數(shù)據(jù)同步的過程存在延時。

• 最終一致性,是指系統(tǒng)中的所有數(shù)據(jù)副本經(jīng)過一定時間后,最終能夠達到一致的狀態(tài)。因此,最終一致性的本質是需要系統(tǒng)保證最終數(shù)據(jù)能夠達到一致,而不需要實時保證系統(tǒng)數(shù)據(jù)的強一致性。

BASE理論與關系數(shù)據(jù)庫中的ACID理論是兩種截然相反的理論。下面,我們通過一張表來分析BASE理論和ACID理論的區(qū)別,具體如表1所示。

base理論

最終一致性

數(shù)據(jù)的一致性可以根據(jù)強度的不同分為兩種,即強一致性和弱一致性。其中,強一致性要求集群中的所有結點的狀態(tài)實時保持一致;弱一致性不要求系統(tǒng)各結點狀態(tài)實時保持一致,而最終一致性是弱一致性的一種特殊形式。NoSQL.數(shù)據(jù)庫通常選擇放棄強一致性,用最終一致性的思想設計分布式系統(tǒng),從而使得系統(tǒng)達到高可用性和高擴展性。

最終一致性,指的是保證用戶最終能夠讀取到某操作對系統(tǒng)特定數(shù)據(jù)的更新。但是隨著時間的遷移,不同結點上的同一份數(shù)據(jù)總是在向趨同的方向變化。也可以簡單地理解為,在一段時間后,結點之間的數(shù)據(jù)會最終達到一致狀態(tài)。實現(xiàn)最終一致性最常見的系統(tǒng)是DNS域名系統(tǒng),由于DNS是多級緩存的實現(xiàn),所以修改DNS記錄后不會立刻在全球所有的DNS服務結點生效,需要等DNS服務器緩存過期后,再向源服務器更新新的記錄才能生效。

最終一致性可以分為“因果”一致性、“讀己之所寫”一到性、“會話”一致性、“單調讀”一致性以及“單調寫”一致性,具體介紹如下:

• “因果”一致性:如果進程A通知進程B它已更新了一個數(shù)據(jù)項,那么進程B的后續(xù)訪問將返回更新后的值,且一次寫入將保證取代前一次寫入。與進程A無因果關系的進程C的訪問遵循一般的最終一致性規(guī)則。

• “讀己之所寫”一致性:指的是進程A在修改了數(shù)據(jù)后,它總能讀取到修改過的數(shù)據(jù)值,而不會讀取到原始值。讀己之所寫一致性是因果一致性的一個特例。

• “會話”一致性:指的是將訪問存儲系統(tǒng)的進程放到會話的上下文中,若是會話存在,則系統(tǒng)就保證“讀己之所寫”一致性;若是由于系統(tǒng)宕機或者網(wǎng)絡不穩(wěn)定導致會話終止,則需要建立新的會話。

• “單調讀”一致性:指的是進程已經(jīng)讀取過數(shù)據(jù)對象的某個值,則任何后續(xù)訪問都不會返回在這個值之前的值,這樣就可以保證每個客戶端在之后的請求中獲取到的數(shù)據(jù)是最新的數(shù)據(jù)。

• “單調寫”一致性:指的是系統(tǒng)保證來自同一個進程的寫操作是順序執(zhí)行的。上述最終一致性的不同形式可以進行組合,例如“單調讀”一致性和“讀己之所寫”一致性進行組合,就可以讀取自己更新的數(shù)據(jù)和一旦讀取到最新的數(shù)據(jù)就不會再讀到舊版本的數(shù)據(jù),這樣可以使得存儲系統(tǒng)降低了一致性的要求并提供了高可用性。



0 分享到:
和我們在線交談!