05.rocketmq分佈式事務解決方案

參考開源項目:https://gitee.com/owenwangwen/open-capacity-platform
分佈式事務
問題描述
來源:單體應用 -->拆分爲分佈式應用
一個接口調用不同服務,並且操作不同的數據庫,數據的一致性問題難以保證

05.rocketmq分佈式事務解決方案

rocketmq分佈式事務消息
rocketmq事務消息
通過rocketmq事務消息達到分佈式事務的最終一致性
rocketmq的優勢
整體交互流程

05.rocketmq分佈式事務解決方案

● producer向broker端發送消息
● 服務端將消息持久化成功後,向發送端ack確認消息已經發送成功,此時標記消息未半消息,不可投遞狀態
● 發送端開始執行本地事務邏輯
● 發送端根據本地事務執行結果向服務端提交二次確認(commit or rollback),服務端收到commit狀態則將半消息標記爲可投遞,消息訂閱端最終收到該消息,服務端收到rollback狀態則刪除半消息,消息訂閱端不會收到該消息
● 在斷網或者應用重啓極端情況下,上述步驟不會提交二次確認,經過一定時間後服務端對該消息發起消息回查
● 發送端收到消息回查後,需要檢測對應消息的本地事務執行的最終結果
● 發送端根據檢測得到的本地事務最終狀態再次提交二次確認,服務端按照二次確認狀態決定消息訂閱端是否消費消息
代碼分析
模擬發送事務消息

05.rocketmq分佈式事務解決方案

事務消息

05.rocketmq分佈式事務解決方案

本地事務

05.rocketmq分佈式事務解決方案

二次確認

05.rocketmq分佈式事務解決方案

消息回查

05.rocketmq分佈式事務解決方案

消息消費

05.rocketmq分佈式事務解決方案

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章