cap理论具体含义_分布式事务的CAP理论
相關(guān)歷史文章(閱讀本文之前,您可能需要先看下之前的系列 )
分布式事務「2020年」必學,升職加薪你準備好了嗎?
事務的基本概念
事務的四大特性ACID
分布式事務產(chǎn)生的場景
前言
通過前面的學習,我們了解到了分布式的基礎(chǔ)概念,與本地事務不同的是,分布式系統(tǒng)之所以叫分布式系統(tǒng),是因為提供服務的若干個節(jié)點分布在不同機器上,相互之間通過網(wǎng)絡交互,不能因為有一點網(wǎng)絡問題就導致整個系統(tǒng)無法提供服務,網(wǎng)絡因素成為了分布式事務的考量標準之一。因此,分布式事務需要進一步的理論基礎(chǔ),接下來,我們先來學習一下分布式事務的CAP理論。
在講解分布式事務事務控制解決方案之前需要先學習一些基礎(chǔ)理論,通過理論知識指導我們確定分布式事務控制的目標,從而幫助我們理解每個解決方案。
一、CAP理論
CAP是Consistency、Avaliability、Partitiontolerance三個詞語的縮寫,分別表示一致性、可用性、分區(qū)容忍性。
為了方便對CAP理論的理解,我們結(jié)合電商系統(tǒng)中的一些業(yè)務場景來理解CAP,如下圖,是商品信息管理的執(zhí)行流程:
執(zhí)行流程如下:
(1)商品請求主數(shù)據(jù)庫寫入商品信息(添加商品、修改商品、刪除商品);
(2)主數(shù)據(jù)庫向商品服務響應寫入成功;
(3)商品服務請求從數(shù)據(jù)庫讀取商品信息;
1.1 C - 一致性
一致性是寫操作后的讀操作可以讀取到最新的數(shù)據(jù)狀態(tài),當數(shù)據(jù)分布在多個節(jié)點時,從任意節(jié)點讀取到的數(shù)據(jù)都是最新的狀態(tài)。
上圖中,商品信息的讀寫要滿足一致性就是要實現(xiàn)如下目標:
(1)商品服務寫入主數(shù)據(jù)庫成功,則向從數(shù)據(jù)庫查詢新數(shù)據(jù)也成功。
(2)商品服務寫入主數(shù)據(jù)庫失敗,則向從數(shù)據(jù)庫查詢新數(shù)據(jù)也失敗。
如何實現(xiàn)一致性?
(1)寫入主數(shù)據(jù)庫后要將數(shù)據(jù)同步到從數(shù)據(jù)庫。
(2)寫入主數(shù)據(jù)庫后,在向從數(shù)據(jù)庫同步期間要將從數(shù)據(jù)庫鎖定,待同步完成后再釋放鎖,以免在新數(shù)據(jù)庫寫入成功后,向從數(shù)據(jù)庫查詢到舊的數(shù)據(jù)。
分布式一致性的特點:
(1)由于存在數(shù)據(jù)同步的過程,寫操作的相應會有一定延遲。
(2)為了保證數(shù)據(jù)一致性會對資源暫時鎖定,待數(shù)據(jù)同步完成釋放鎖定資源。
(3)如果請求數(shù)據(jù)同步失敗的節(jié)點則會返回錯誤信息,一定不會返回舊信息。
1.2 A – 可用性
可用性是指任何事務操作都可以得到相應結(jié)果,且不會出現(xiàn)響應超時或響應錯誤。
上圖中,商品信息的讀取要滿足可用性就是要實現(xiàn)如下目標:
(1)從數(shù)據(jù)庫接收到查詢的請求則立即能夠響應數(shù)據(jù)查詢結(jié)果。
(2)從數(shù)據(jù)庫查詢不允許出現(xiàn)響應超時或者響應錯誤。
如何實現(xiàn)可用性?
(1)寫入主數(shù)據(jù)庫要將數(shù)據(jù)同步到從數(shù)據(jù)庫。
(2)由于要保證從數(shù)據(jù)庫的可用性,不可將從數(shù)據(jù)庫中的資源鎖定。
(3)即時數(shù)據(jù)還沒有同步過來,從數(shù)據(jù)庫也要返回要查詢的數(shù)據(jù),哪怕是舊數(shù)據(jù),如果連舊數(shù)據(jù)也沒有則可以按照約定返回一個默認信息,但不能返回錯誤或相應超時。
分布式系統(tǒng)可用性的特點:
(1)所有請求都有響應,且不會出現(xiàn)響應超時或者響應錯誤。
1.3 P – 分區(qū)容忍性
通常分布式系統(tǒng)的各個節(jié)點部署在不同的子網(wǎng),這就是網(wǎng)絡分區(qū),不可避免的會出現(xiàn)由于網(wǎng)絡問題而導致節(jié)點之間通信失敗,此時仍可對外提供服務,這叫分區(qū)容忍性。
上圖中,商品信息讀寫要滿足分區(qū)容忍性就是要實現(xiàn)如下目標:
(1)主數(shù)據(jù)向從數(shù)據(jù)庫同步數(shù)據(jù)失敗不影響讀寫操作。
(2)一個節(jié)點掛掉不影響另一個節(jié)點對外提供服務。
如何實現(xiàn)分區(qū)容忍性?
(1)盡量使用異步取代同步操作,例如使用異步方式將數(shù)據(jù)從主數(shù)據(jù)庫同步到從數(shù)據(jù)庫,這樣節(jié)點之間有效的實現(xiàn)松耦合。
(2)添加從數(shù)據(jù)庫節(jié)點,其中一個節(jié)點掛掉其它節(jié)點提供服務。
分布式分區(qū)容忍性的特點:
(1)分區(qū)容忍性是分布式系統(tǒng)具備的基本能力。
二、CAP組合方式
在所有的分布式事務場景中不會同時具備CAP三個特性,因為在具備了P的前提下C和A是不能共存的。
下圖滿足了P即表示實現(xiàn)了分區(qū)容忍性:
分區(qū)容忍的含義:
(1)主數(shù)據(jù)庫通過網(wǎng)絡向從數(shù)據(jù)庫同步數(shù)據(jù),可以認為主從數(shù)據(jù)庫部署在不同的分區(qū)上,通過網(wǎng)絡進行交互。
(2)當主數(shù)據(jù)庫和從數(shù)據(jù)庫之間的網(wǎng)絡出現(xiàn)問題不影響主數(shù)據(jù)庫和從數(shù)據(jù)庫對外提供服務。
(3)其一個節(jié)點掛掉不影響另一個節(jié)點對外提供服務。
如果要實現(xiàn)C則必須保證數(shù)據(jù)一致性,在數(shù)據(jù)同步的時候為防止向從數(shù)據(jù)庫查詢的不一致則需要從數(shù)據(jù)庫鎖定,待完成同步之后解鎖,如果同步失敗從數(shù)據(jù)庫要返回錯誤信息或超時信息。
如果要實現(xiàn)A則必須保證數(shù)據(jù)可用性,不管任何時候都可以向從數(shù)據(jù)庫進行查詢數(shù)據(jù),并且不能夠返回錯誤信息或者超時信息
通過分析在滿足P的前提下,C和A存在矛盾。
所以在生產(chǎn)中對分布式事務處理時需要根據(jù)需求來確定滿足CAP的哪兩個方面。
1.1 CA組合
CA組合就是保證一致性和可用性,放棄分區(qū)容忍性,即不進行分區(qū),不考慮由于網(wǎng)絡不通或節(jié)點掛掉的問題。那么系統(tǒng)將不是一個標準的分布式系統(tǒng),我們最常用的關(guān)系型數(shù)據(jù)庫就滿足了CA。
1.2 CP組合
CP組合就是保證一致性和分區(qū)容忍性,放棄可用性。Zookerper就是追求強一致性,放棄了可用性,還有跨行轉(zhuǎn)賬,一次轉(zhuǎn)賬請求要等待雙方銀行系統(tǒng)都完成整個事務才能完成。
1.3 AP組合
AP組合就是保證可用性和分區(qū)容忍性,放棄一致性。這是分布式系統(tǒng)設計時的選擇。
三、小結(jié)
通過上面我們學習了CAP的基礎(chǔ)理論知識,CAP是一個已經(jīng)證實的理論:一個分布式系統(tǒng)做多只能滿足CAP中的兩項,為達到良好的響應性能來提高用戶體驗,因此一般會做出如下選擇:保證A和P,舍棄C強一致性,保證最終一致性。
分布式事務解決方案「手寫代碼」:http://t.cn/AieNUirK
點擊「閱讀原文」,快人一步,快速學習分布式事務!
總結(jié)
以上是生活随笔為你收集整理的cap理论具体含义_分布式事务的CAP理论的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 国债怎么购买
- 下一篇: 人民币是世界货币吗 世界货币中有人民币吗