您好,登錄后才能下訂單哦!
這篇文章給大家介紹分布式CAP定理和BASE理論是怎樣的,內(nèi)容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
2000年的時候,Eric Brewer教授提出了CAP猜想,2年后,被 Seth Gilbert 和 Nancy Lynch 從理論上證明了猜想的可能性,從此,CAP 理論正式在學(xué)術(shù)上成為了分布式計算領(lǐng)域的公認定理。并深深的影響了分布式計算的發(fā)展。
一個分布式系統(tǒng)不可能同時滿足一致性(C:Consistency),可用性(A: Availability)和分區(qū)容錯性(P:Partition tolerance)這三個基本需求,最多只能同時滿足其中的2個。
選項 | 描述 |
---|---|
C(Consistence) | 一致性,在集群中一部分節(jié)點故障后,集群整體是否還能響應(yīng)客戶端的讀寫請求。(對數(shù)據(jù)更新具備高可用性) |
A(Availability) | 可用性,指系統(tǒng)提供的服務(wù)必須一直處于可用的狀態(tài),每次請都能獲取到非錯的響應(yīng)——但是不保證獲取的數(shù)據(jù)為最新數(shù)據(jù)。 |
P(Network Partitioning | 分區(qū)容錯性,分布式系統(tǒng)在遇到任何網(wǎng)絡(luò)分區(qū)故障的時候,仍然能夠?qū)ν馓峁M足一致性和可用性的服務(wù),除非整個網(wǎng)絡(luò)環(huán)境都發(fā)生了故障。 |
為什么只能滿足其中兩個不能同時滿足三個?
在這之前我們來講一個故事,張三、李四、王麻子三個小朋友玩捉迷藏,張三抓,其余兩個藏,王麻子這個時候肚子餓了,就跑回家吃飯去了也沒告訴這兩位小朋友,張三和李四找了好久都沒找到。因為王麻子和他倆的信息斷了,并不知道王麻子是藏著還是溜回家了。
在數(shù)據(jù)庫中保證數(shù)據(jù)的一致性,保證高可用,但是我們不能保證每臺服務(wù)器不會中斷、每次的操作都能順利到達每臺服務(wù)器因為分區(qū)容錯。同樣,我們在插入數(shù)據(jù)的時候要保證每臺服務(wù)器都插入成功后再返回請求成功,這樣可用性就會非常低,系統(tǒng)響應(yīng)速度非常慢甚至宕機。
組 合 | 分析結(jié)果 |
---|---|
CA | 滿足原子和可用,放棄分區(qū)容錯。說白了,就是一個整體的應(yīng)用。 |
CP | 滿足原子和分區(qū)容錯,也就是說,要放棄可用。當系統(tǒng)被分區(qū),為了保證原子性,必須放棄可用性,讓服務(wù)停用。 |
AP | 滿足可用性和分區(qū)容錯,當出現(xiàn)分區(qū),同時為了保證可用性,必須讓節(jié)點繼續(xù)對外服務(wù),這樣必然導(dǎo)致失去原子性。 |
我們可以試想,分區(qū)容錯是分布式必須的,客戶使用系統(tǒng)的可用性也是我們的目標,犧牲一致性,通過技術(shù)手段來實現(xiàn)一致性,比如說我們通過消息隊列把數(shù)據(jù)發(fā)布到每臺數(shù)據(jù)節(jié)點。這樣為了解決CAP帶來的問題,BASE理論出現(xiàn)了。
BASE:全稱:Basically Available(基本可用),Soft state(軟狀態(tài)),和 Eventually consistent(最終一致性)三個短語的縮寫,來自 ebay 的架構(gòu)師提出。
Base 理論是對 CAP 中一致性和可用性權(quán)衡的結(jié)果,其來源于對大型互聯(lián)網(wǎng)分布式實踐的總結(jié),是基于 CAP 定理逐步演化而來的。其核心思想是:無法做到強一致性(Strong consistency),但每個應(yīng)用都可以根據(jù)自身的業(yè)務(wù)特點,采用適當?shù)姆绞絹硎瓜到y(tǒng)達到最終一致性(Eventual consistency)。
什么是基本可用呢?假設(shè)系統(tǒng),出現(xiàn)了不可預(yù)知的故障,但還是能用,相比較正常的系統(tǒng)而言:
響應(yīng)時間上的損失:正常情況下的搜索引擎 0.5 秒即返回給用戶結(jié)果,而基本可用的搜索引擎可以在 1 秒作用返回結(jié)果。
功能上的損失:在一個電商網(wǎng)站上,正常情況下,用戶可以順利完成每一筆訂單,但是到了大促期間,為了保護購物系統(tǒng)的穩(wěn)定性,部分消費者可能會被引導(dǎo)到一個降級頁面。
軟狀態(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ù)延時。
最終一致性:系統(tǒng)能夠保證在沒有其他新的更新操作的情況下,數(shù)據(jù)最終一定能夠達到一致的狀態(tài),因此所有客戶端對系統(tǒng)的數(shù)據(jù)訪問最終都能夠獲取到最新的值。
最終一致性分為 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í)行。
BASE 理論面向的是大型高可用可擴展的分布式系統(tǒng),和傳統(tǒng)事務(wù)的 ACID 是相反的,它完全不同于 ACID 的強一致性模型,而是通過犧牲強一致性來獲得可用性,并允許數(shù)據(jù)在一段時間是不一致的。
關(guān)于分布式CAP定理和BASE理論是怎樣的就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。