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

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

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

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

好口碑IT培訓(xùn)

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

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

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

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

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

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

base理論

最終一致性

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

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

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

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

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

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

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

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



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