1. 程式人生 > >微服務架構分散式事務解決方案設計思路

微服務架構分散式事務解決方案設計思路

第一節:瞭解常用的分散式解決方案

一、分散式事務方案:最終一致性、事務補償、TCC、兩階段提交、最大能力通知等。具體結合業務場景。很多大型企業自主研發了自己的分散式事務解決方案,如:支付寶 XTS,去哪兒 QMQ。

1.基於可靠訊息的最終一致性解決方案(非同步確保型)(適用場景比較廣)

2.TCC事務補償性方案(try-confirm-cancel)(也屬於兩階段型的,但區別於2PC協議的兩階段提交)

3.最大努力通知型方案(一般跨平臺通知比較常用)

###第二節:解決方案效果展示(結合支付系統真實應用場景)

image

image

一.場景(如上圖)

1、基於可靠訊息最終一致性方案

場景:對應支付系統會計非同步記賬業務;銀行通知結果資訊儲存與驅動訂單處理。

2、TCC方案

場景:對應支付系統的訂單賬戶操作:訂單處理、資金賬戶處理、積分賬戶處理。

3、最大努力通知型方案

場景:對應支付系統的商戶通知業務場景

###二、用到的技術:

dubbo、spring、springMVC、mybatis、druid

jdk7(或jdk8)、mysql5.6、tomcat、相容JMS標準的MQ(activeMQ)

第三節:常用分散式事務方案介紹

###一、事務介紹

1.由一組操作構成的可靠、獨立的工作單元。

2.ACID: atomicity(原子性) 、consistency(一致性)、isolation(隔離性)、durability(永續性)

3.難點:高度併發、資源分佈、大時間跨度

二、本地事務

1.事務由資源管理器本地管理(如:spring 註解)

2.優點:支援嚴格的ACID屬性、可靠、高效、狀態可以只在資源管理器中維護、應用程式設計模型簡單(在框架或平臺的支援)

3.侷限:不支援分散式事務處理能力、隔離的最小單位由資源管理器決定(如:資料庫中的一條記錄)

三、全域性事務(DTP模型)--標準分散式事務

image

image

四、javaEE平臺中的分散式事務實現

image

五、柔性事務

image

1.柔性事務中的服務模式:可查詢模式、冪等操作、TCC操作、可補償操作。

image

2.柔性事務解決方案:可靠訊息最終一致

image

image 在此我向大家推薦一個架構學習交流圈。交流學習企鵝群號:948368769(裡面有大量的面試題及答案)裡面會分享一些資深架構師錄製的視訊錄影:有Spring,MyBatis,Netty原始碼分析,高併發、高效能、分散式、微服務架構的原理,JVM效能優化、分散式架構等這些成為架構師必備的知識體系。還能領取免費的學習資源,目前受益良多 3.TCC

image

image

4.最大努力通知型

image

六、總結

常用的分散式事務解決方案:

*剛性事務:全域性事務(標準的分散式事務)

*柔性事務:

可靠訊息最終一致(非同步確認型)

TCC(兩階段型、補償型)

最大努力通知型(非可靠訊