分布式事務(wù)基礎(chǔ)理論
- 通過前面的學(xué)習(xí)典阵,我們了解到了分布式事務(wù)的基礎(chǔ)概念。與本地事務(wù)不同的是浸颓,分布式系統(tǒng)之所以叫分布式物臂,是因?yàn)樘峁┓?wù)的各個(gè)節(jié)點(diǎn)分布在不同機(jī)器上旺拉,相互之間通過網(wǎng)絡(luò)交互。不能因?yàn)橛幸稽c(diǎn)網(wǎng)絡(luò)問題就導(dǎo)致整個(gè)系統(tǒng)無法提供服務(wù)棵磷,網(wǎng)絡(luò)因素成為了分布式事務(wù)的考量標(biāo)準(zhǔn)之一蛾狗。因此,分布式事務(wù)需要更進(jìn)一步的理論支持仪媒,接下來沉桌,我們先來學(xué)習(xí)一下分布式事務(wù)的CAP理論。
CAP理論
理解CAP
- CAP是 Consistency算吩,Availability留凭,Partition tolerance三個(gè)詞語的縮寫,分別為表示一致性偎巢,可用性蔼夜,分區(qū)容錯(cuò)性。
- 下邊我們分別來理解:
- 為了方便理解CAP理論的理解压昼,我們結(jié)合電商系統(tǒng)中的一些業(yè)務(wù)場(chǎng)景來理解CAP求冷。
-
如下圖,是商品信息管理的執(zhí)行流程:
image - 整體執(zhí)行流程如下:
- 1.商品服務(wù)請(qǐng)求主數(shù)據(jù)庫寫入商品信息(添加商品窍霞,修改商品遵倦,刪除商品)。
- 2.主數(shù)據(jù)庫向商品服務(wù)響應(yīng)寫入成功官撼。
- 3.商品服務(wù)請(qǐng)求從數(shù)據(jù)庫讀取商品信息梧躺。
C-Consistency:
- 一致性是指寫操作后的讀操作可以讀取到最新的數(shù)據(jù)狀態(tài),當(dāng)數(shù)據(jù)分布在多個(gè)節(jié)點(diǎn)上傲绣,從任意結(jié)點(diǎn)讀取到的數(shù)據(jù)都是最新的狀態(tài)掠哥。
- 上圖中,商品信息的讀寫要滿足一致性就是要實(shí)現(xiàn)如下目標(biāo):
- 1.商品服務(wù)寫入主數(shù)據(jù)庫成功秃诵,則向從數(shù)據(jù)庫查詢新數(shù)據(jù)也成功续搀。
- 2.商品服務(wù)寫入主數(shù)據(jù)失敗,則向從數(shù)據(jù)庫查詢新數(shù)據(jù)也失敗菠净。
如何實(shí)現(xiàn)一致性禁舷?
- 1.寫入主數(shù)據(jù)庫后要將數(shù)據(jù)同步到從數(shù)據(jù)庫。
- 2.寫入主數(shù)據(jù)庫后毅往,在向從數(shù)據(jù)庫同步期間要將從數(shù)據(jù)庫鎖定牵咙,待同步完成后再釋放鎖,以免在新數(shù)據(jù)寫入成功后攀唯,向從數(shù)據(jù)庫查詢到舊的數(shù)據(jù)洁桌。
分布式系統(tǒng)一致性的特點(diǎn):
- 1.由于存在數(shù)據(jù)同步的過程,寫操作的響應(yīng)會(huì)有一定延遲侯嘀。
- 2.為了保證數(shù)據(jù)一致性對(duì)資源暫時(shí)鎖定另凌,待數(shù)據(jù)同步完成釋放鎖定資源谱轨。
A-Availability
- 可用性是指任何事務(wù)操作都可以得到響應(yīng)結(jié)果,且不會(huì)出現(xiàn)響應(yīng)超時(shí)或響應(yīng)錯(cuò)誤吠谢。
- 上圖中土童,商品信息讀取滿足可用性就是要實(shí)現(xiàn)如下目標(biāo):
- 1.從數(shù)據(jù)庫收到數(shù)據(jù)查詢的請(qǐng)求則立即能夠響應(yīng)數(shù)據(jù)查詢結(jié)果。
- 2.從數(shù)據(jù)庫不允許出現(xiàn)響應(yīng)超時(shí)或響應(yīng)錯(cuò)誤工坊。
如何實(shí)現(xiàn)可用性娜扇?
- 1.寫入主數(shù)據(jù)庫后要將數(shù)據(jù)同步到從數(shù)據(jù)庫。
- 1.由于要保證從數(shù)據(jù)庫的可用性栅组,不可將從數(shù)據(jù)庫的資源進(jìn)行鎖定雀瓢。
- 3.即時(shí)數(shù)據(jù)還沒有同步過來,從數(shù)據(jù)庫也要返回要查詢的數(shù)據(jù)玉掸,哪怕是舊數(shù)據(jù)刃麸,如果連舊數(shù)據(jù)也沒有則可以按照約定返回一個(gè)默認(rèn)信息,但不能返回錯(cuò)誤或響應(yīng)超時(shí)司浪。
分布式系統(tǒng)可用性的特點(diǎn):
- 1.所有請(qǐng)求都有響應(yīng)泊业,且不會(huì)出現(xiàn)響應(yīng)超時(shí)或響應(yīng)錯(cuò)誤。
P-Partition tolerance:
- 通常分布式系統(tǒng)的各各結(jié)點(diǎn)部署在不同的子網(wǎng)啊易,這就是網(wǎng)絡(luò)分區(qū)吁伺,不可避免的會(huì)出現(xiàn)由于網(wǎng)絡(luò)問題而導(dǎo)致節(jié)點(diǎn)之間通信失敗,此時(shí)仍可對(duì)外提供服務(wù)租谈,這叫分區(qū)容錯(cuò)性篮奄。
- 上圖中,商品信息讀寫滿足分區(qū)容錯(cuò)性就是要實(shí)現(xiàn)如下目標(biāo):
- 1.主數(shù)據(jù)庫向從數(shù)據(jù)庫同步數(shù)據(jù)失敗不影響讀寫操作割去。
- 2.其一個(gè)節(jié)點(diǎn)掛掉不影響另一個(gè)結(jié)點(diǎn)對(duì)外提供服務(wù)窟却。
如何實(shí)現(xiàn)分區(qū)容錯(cuò)性?
- 1.盡量使用異步取代同步操作呻逆,例如使用異步方式將數(shù)據(jù)從主數(shù)據(jù)庫同步到從數(shù)據(jù)庫夸赫,這樣結(jié)點(diǎn)之間能有效的實(shí)現(xiàn)耦合。
- 2.添加從數(shù)據(jù)庫結(jié)點(diǎn)咖城,其中一個(gè)結(jié)點(diǎn)掛掉其他從結(jié)點(diǎn)提供服務(wù)茬腿。
分布式分區(qū)容錯(cuò)性的特點(diǎn):
- 1.分區(qū)容錯(cuò)性是分布式系統(tǒng)具備的基本能力。