您好,登錄后才能下訂單哦!
大數(shù)據(jù)中如何徹底解決分布式系統(tǒng)一致性問題,針對這個問題,這篇文章詳細(xì)介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
要想解決一致性問題,就要先搞明白,什么是一致性問題,一致性問題是分布式常見問題,還可以再分為最終一致性和強(qiáng)一致性,但通常指強(qiáng)一致性,書中表示"你中有我,我中有你,渾然一體";人多力量大,引申出分而治之的思想和邏輯。
水平拆分:這里所說的水平,我理解為橫向的空間維度拆分,不單指數(shù)據(jù)庫表的拆分和緩存的拆分,特指了池化技術(shù),可以類比集群的概念,既:多個相同的服務(wù)部在同一個服務(wù)上。分布式既:一個服務(wù)拆分為不同的服務(wù)。
垂直拆分:"專業(yè)的人干專業(yè)的事",這樣簡單單一,好維護(hù),類比設(shè)計模式的單一職責(zé)原則,設(shè)計模式的單一職責(zé)指的是引起類變的原因只有一個。
一致性指:分布式服務(wù)化系統(tǒng)之間的弱一致性,包括應(yīng)用系統(tǒng)的一致性和數(shù)據(jù)的一致性。
根據(jù)這個概念也可以細(xì)分下高并發(fā)的方向,細(xì)分為數(shù)據(jù)的高并發(fā)和請求的高并發(fā)來提出解決方案。
一致性問題
案例一:下訂單和扣庫存
電商系統(tǒng)中,如何保持下訂單和扣庫存的操作一致性。如果先下訂單扣庫存失敗,會出現(xiàn)超賣;如果下訂單不成功,扣庫存成功,會導(dǎo)致少賣。
案例二:同步調(diào)用超時
系統(tǒng)A調(diào)用系統(tǒng)B超時,A得到反饋,但無法保證B是是否完成預(yù)設(shè)功能,導(dǎo)致A無法反饋調(diào)用方。
案例三:異步回調(diào)超時
大多數(shù)支付都是做的異步回調(diào)
A調(diào)用B,B異步通知A,但A遲遲收不到成功信息,導(dǎo)致無法跳到訂單頁面
案例四:緩存和數(shù)據(jù)庫不一致
為了應(yīng)對高并發(fā)讀操作,訪問數(shù)據(jù)庫之前,先加一層緩存,比如電商商品詳情頁面展示,那么緩存和數(shù)據(jù)庫之間的數(shù)據(jù)如何保持一致性?如果對數(shù)據(jù)有強(qiáng)一致性要求,不能放緩存
案例一共8個,這里摘出我感興趣的4個,特別是最后一個。
解決一致性問題的模式和思路
根據(jù)拋出的問題,進(jìn)行分析和提出解決方案。
ACID原理
原子性(Atomicity):原子意為最小的粒子,或者說不能再分的事物。數(shù)據(jù)庫事務(wù)的不可再分的原則即為原子性。組成事務(wù)的所有查詢必須:要么全部執(zhí)行,要么全部取消。
一致性(Consistency):指數(shù)據(jù)的規(guī)則,在事務(wù)前/后應(yīng)保持一致。
隔離性(Isolation):簡單點說,某個事務(wù)的操作對其他事務(wù)不可見的.
持久性(Durability):當(dāng)事務(wù)提交完成后,其影響應(yīng)該保留下來,不能撤消。
CAP原理
C:一致性
A:可用性
P:分區(qū)容錯性
任何分布式系統(tǒng)無法同時滿足三點,淘寶雙11滿足的就是AP原則,zookeeper與Eureka的區(qū)別也是zookeeper滿足CP,Eureka滿足AP原則
BASE模型
BA:基本可用
S:軟狀態(tài),狀態(tài)可以在一段時間內(nèi)不同步
E:最終一致
BASE思想可以解決案例一一致性問題
那么我們是如何解決案例四中緩存與數(shù)據(jù)庫的一致性問題呢?
現(xiàn)在的大多數(shù)方案都是先清緩存,再寫庫,再更緩存的操作,但高并發(fā)帶來的問題還是無法真正解決,只是出現(xiàn)的條件比較苛刻。
兩階段提交,三階段提交,TCC、
兩階段提交協(xié)議:準(zhǔn)備階段,提交階段
三階段提交協(xié)議:詢問階段,準(zhǔn)備階段,提交階段
TCC協(xié)議:Try,Confirm,Cancel,先執(zhí)行try,沒問題執(zhí)行confirm,如果出現(xiàn)問題執(zhí)行Cancel。
關(guān)于大數(shù)據(jù)中如何徹底解決分布式系統(tǒng)一致性問題問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。