餓了麼外賣場景,分佈式事務解決方案

1.07.59

在互聯網開發中,分佈式系統中的最難點可以說是分佈式事務。

在分佈式系統中,由於一個微服務連接一個庫,一個業務操作多個庫操作時,本地數據庫操作+遠程調用操作數據庫,這時存在分佈式事務問題。

例如:

1.庫A成功,遠程調用庫B也成功,但事務提交失敗,這時B庫依然產生數據

2.庫A操作成功,遠程調用庫B超時(熔斷等),這時A庫回滾,B庫依然可能產生數據

 

解決分佈式事務問題的核心在於:

1.生產者可靠生產消息

2.消費者可靠消費消息

 

1.1可靠生產消息-記錄消息發送

創建一個消息表,存儲發往MQ的數據及狀態

1.2可靠生產消息-修改消息發送狀態

rabbitmq開啓消息:發送確認機制

在services裏初始化一個方法,處理rabbitmq收到消息的ack回執,修改消息表的狀態

這裏還需要注意,可能存在回執沒收到的情況,這時要有兜底方案,定時任務掃描消息表,重發機制

2.1可靠處理消息

 

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