參考來(lái)源
分布式事務(wù)的典型處理方式:2PC、TCC、異步確保和最大努力型
- 柔性事務(wù)和剛性事務(wù)
- 兩階段提交(2PC)型
2、事務(wù)補(bǔ)償型(TCC事務(wù)):
3、異步確保型
4、最大努力型 - 柔性事務(wù)和剛性事務(wù)
柔性事務(wù)滿(mǎn)足BASE理論(基本可用,最終一致)
剛性事務(wù)滿(mǎn)足ACID理論
本文主要圍繞分布式事務(wù)當(dāng)中的柔性事務(wù)的處理方式進(jìn)行討論。
柔性事務(wù)分為
兩階段型
補(bǔ)償型
異步確保型
最大努力通知型幾種。
由于支付寶整個(gè)架構(gòu)是SOA架構(gòu),因此傳統(tǒng)單機(jī)環(huán)境下數(shù)據(jù)庫(kù)的ACID事務(wù)滿(mǎn)足了分布式環(huán)境下的業(yè)務(wù)需要,以上幾種事務(wù)類(lèi)似就是針對(duì)分布式環(huán)境下業(yè)務(wù)需要設(shè)定的。
- 兩階段提交(2PC)型
兩階段型:就是分布式事務(wù)兩階段提交,對(duì)應(yīng)技術(shù)上的XA、JTA/JTS。
這是分布式環(huán)境下事務(wù)處理的典型模式。
2、事務(wù)補(bǔ)償型(TCC事務(wù)):
TCC型事務(wù)(Try/Confirm/Cancel)可以歸為補(bǔ)償型。
補(bǔ)償型的例子,在一個(gè)長(zhǎng)事務(wù)( long-running )中 ,一個(gè)由兩臺(tái)服務(wù)器一起參與的事務(wù),服務(wù)器A發(fā)起事務(wù),服務(wù)器B參與事務(wù),B的事務(wù)需要人工參與,所以處理時(shí)間可能很長(zhǎng)。如果按照ACID的原則,要保持事務(wù)的隔離性、一致性,服務(wù)器A中發(fā)起的事務(wù)中使用到的事務(wù)資源將會(huì)被鎖定,不允許其他應(yīng)用訪(fǎng)問(wèn)到事務(wù)過(guò)程中的中間結(jié)果,直到整個(gè)事務(wù)被提交或者回滾。這就造成事務(wù)A中的資源被長(zhǎng)時(shí)間鎖定,系統(tǒng)的可用性將不可接受。
WS-BusinessActivity提供了一種基于補(bǔ)償?shù)膌ong-running的事務(wù)處理模型。還是上面的例子,服務(wù)器A的事務(wù)如果執(zhí)行順利,那么事務(wù)A就先行提交,如果事務(wù)B也執(zhí)行順利,則事務(wù)B也提交,整個(gè)事務(wù)就算完成。但是如果事務(wù)B執(zhí)行失敗,事務(wù)B本身回滾,這時(shí)事務(wù)A已經(jīng)被提交,所以需要執(zhí)行一個(gè)補(bǔ)償操作,將已經(jīng)提交的事務(wù)A執(zhí)行的操作作反操作,恢復(fù)到未執(zhí)行前事務(wù)A的狀態(tài)。這樣的SAGA事務(wù)模型,是犧牲了一定的隔離性和一致性的,但是提高了long-running事務(wù)的可用性。
例子來(lái)源:OASIS的WS-BusinessActivity文檔
3、異步確保型
將一些同步阻塞的事務(wù)操作變?yōu)楫惒降牟僮?,避免?duì)數(shù)據(jù)庫(kù)事務(wù)的爭(zhēng)用,典型例子是熱點(diǎn)賬戶(hù)異步記賬、批量記賬的處理。
4、最大努力型
PPT中提到的例子交易的消息通知(例如商戶(hù)交易結(jié)果通知重試、補(bǔ)單重試)
如果有技術(shù)背景,可以參考另外一個(gè)文檔 大規(guī)模SOA系統(tǒng)中的分布事務(wù)處事 ,對(duì)支付寶分布式事務(wù)處理機(jī)制有較為詳細(xì)描述。
更詳細(xì)的也可以參考OASIS的相關(guān)資料。
參考資料:
https://www.zhihu.com/question/31813039(梁川)
支付寶架構(gòu)與技術(shù)
大規(guī)模SOA系統(tǒng)中的分布式事務(wù)處理
分布式 事務(wù)
發(fā)表評(píng)論
撰寫(xiě)評(píng)論