微服务架构分布式事务解决方案设计思路-(概念篇)
2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
學(xué)習(xí)以電商購(gòu)物支付流程中支付系統(tǒng)的支付結(jié)果處理為例(學(xué)習(xí)龍果支付)
第一節(jié):了解常用的分布式解決方案
一、分布式事務(wù)方案:最終一致性、事務(wù)補(bǔ)償、TCC、兩階段提交、最大能力通知等。具體結(jié)合業(yè)務(wù)場(chǎng)景。很多大型企業(yè)自主研發(fā)了自己的分布式事務(wù)解決方案,如:支付寶 XTS,去哪兒 QMQ。
? ? 1.基于可靠消息的最終一致性解決方案(異步確保型)(適用場(chǎng)景比較廣)
? ? 2.TCC事務(wù)補(bǔ)償性方案(try-confirm-cancel)(也屬于兩階段型的,但區(qū)別于2PC協(xié)議的兩階段提交)
? ? 3.最大努力通知型方案(一般跨平臺(tái)通知比較常用)
第二節(jié):解決方案效果展示(結(jié)合支付系統(tǒng)真實(shí)應(yīng)用場(chǎng)景)
一.場(chǎng)景(如上圖)
????1、基于可靠消息最終一致性方案
? ? 場(chǎng)景:對(duì)應(yīng)支付系統(tǒng)會(huì)計(jì)異步記賬業(yè)務(wù);銀行通知結(jié)果信息存儲(chǔ)與驅(qū)動(dòng)訂單處理。
? ? 2、TCC方案
? ? 場(chǎng)景:對(duì)應(yīng)支付系統(tǒng)的訂單賬戶(hù)操作:訂單處理、資金賬戶(hù)處理、積分賬戶(hù)處理。
? ? 3、最大努力通知型方案
? ? 場(chǎng)景:對(duì)應(yīng)支付系統(tǒng)的商戶(hù)通知業(yè)務(wù)場(chǎng)景
二、用到的技術(shù):
? ? dubbo、spring、springMVC、mybatis、druid
? ? jdk7(或jdk8)、mysql5.6、tomcat、兼容JMS標(biāo)準(zhǔn)的MQ(activeMQ)
第二節(jié):常用分布式事務(wù)方案介紹
一、事務(wù)介紹
? ? 1.由一組操作構(gòu)成的可靠、獨(dú)立的工作單元。
? ? 2.ACID: atomicity(原子性) 、consistency(一致性)、isolation(隔離性)、durability(持久性)
? ? 3.難點(diǎn):高度并發(fā)、資源分布、大時(shí)間跨度
二、本地事務(wù)
? ? 1.事務(wù)由資源管理器本地管理(如:spring 注解)
? ? 2.優(yōu)點(diǎn):支持嚴(yán)格的ACID屬性、可靠、高效、狀態(tài)可以只在資源管理器中維護(hù)、應(yīng)用編程模型簡(jiǎn)單(在框架或平臺(tái)的支持)
? ? 3.局限:不支持分布式事務(wù)處理能力、隔離的最小單位由資源管理器決定(如:數(shù)據(jù)庫(kù)中的一條記錄)
三、全局事務(wù)(DTP模型)--標(biāo)準(zhǔn)分布式事務(wù)
????
四、javaEE平臺(tái)中的分布式事務(wù)實(shí)現(xiàn)
五、柔性事務(wù)
? ? 1.柔性事務(wù)中的服務(wù)模式:可查詢(xún)模式、冪等操作、TCC操作、可補(bǔ)償操作。
????
? ? 2.柔性事務(wù)解決方案:可靠消息最終一致
????
????
? ? 3.TCC
????
????
?? ? 4.最大努力通知型
????????
? ? 六、總結(jié)
? ? 常用的分布式事務(wù)解決方案:
? ? *剛性事務(wù):全局事務(wù)(標(biāo)準(zhǔn)的分布式事務(wù))
? ? *柔性事務(wù):
? ? 可靠消息最終一致(異步確認(rèn)型)
? ? TCC(兩階段型、補(bǔ)償型)
? ? 最大努力通知型(非可靠消息、定期校對(duì))
轉(zhuǎn)載于:https://my.oschina.net/sundasheng44/blog/833486
總結(jié)
以上是生活随笔為你收集整理的微服务架构分布式事务解决方案设计思路-(概念篇)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: CNN Mnist
- 下一篇: 解释一下为什么我很少jQuery