1.技術背景
爲何會產生分佈式事務?
微服務分佈式架構,按照服務拆分應用、DB,事務跨庫。
2.解決方案
分佈式事務消息解決方案:
1. 發送半消息
生產者Producer 接收Web請求,投遞給Broker(此消息無法被Consumer消費),這裏必須採用同步消息發送的方法
2.半消息發送成功
Broker收到消息,ACK確認回覆Produer
3.執行本地事務
Producer本地執行 本地業務邏輯事務代碼
4.Commit OR Rollback
根據本地事務執行的結果向Broker 二次確認,Commit 則 該消息可以被Consumer消費;Rollback 則該消息將會被Broker刪除
5.定時消息回查
Producer 和Broker 之間有網絡問題(即本地事務提交成功,但是無法告知Broker)或Broker 重啓時,事務成功與否無法被Broker確認,此時Broker 會定時回查Producer
6.檢查本地事務狀態
Producer查詢本地事務是否成功
7.二次確認Commit OR Rollback
二次確認 步驟5定時消息回查的引起的 步驟6本地事務狀態檢查的 結果
代碼地址:https://github.com/youmustbekiddingme/rocketmq_transaction.git
需要搭建Rocketmq 環境4.4