說說分佈式事務(四)

最終一致性(二)

基於MQ的分佈式事務補償機制

序列圖

圖片描述

異常場景處理

  1. 預建立訂單失敗:若是實際預建立訂單成功,訂單定時補償機制,定時刪除這部分訂單,不影響數據一致性,下單失敗服務器

  2. 預扣減庫存失敗:若是預扣減庫存真實失敗,則下單失敗(訂單由定時補償機制定時刪除,其它應用參照場景4的處理方式,下單失敗;若是實際預扣減庫存成功,參照場景4的處理方式,下單失敗分佈式

  3. 實際建立訂單失敗:若是建立訂單真實失敗(不須要發送下單失敗消息,防止實際建立訂單成功場景)
    ,訂單的預處理數據經過訂單的定時補償機制嘗試刪除(須要考慮事務處理時間,將超過某個時間範圍該事務還處於預處理狀態的訂單刪除),下單失敗;若是實際建立訂單成功,其它應用參照場景4的處理方式,下單成功(提示用戶下單失敗)spa

  4. 發送訂單建立成功消息失敗/庫存服務因爲各類緣由沒有接到下單成功消息:庫存服務定時輪詢處理數據(須要考慮事務處理時間,將超過某個時間範圍該事務還處於預處理狀態的訂單篩選出來),詢問訂單服務改訂單Id對應的訂單是否建立成功,根據訂單建立成功與否選取相應的事務補償機制code

TCC的比較

  1. TCC是把全部的訂單建立步驟平等看待,只要有一個失敗,整個下單流程所有失敗(比較TCC裏面的confirm失敗和基於MQ實際建立訂單失敗的補償難易程度)事件

  2. TCC是經過發消息給TCC服務器,而後由TCC服務調用應用服務;基於MQ的分佈式事務補償機制,是經過將消息發送到MQ,而後由應用本身去監聽MQ的事件圖片

相關文章
相關標籤/搜索