400-885-0207
申請試用
[返回]

分布式事務解決方案的應用

發布時間:2020-05-20

  • IBPS V3分布式事務方案支持 TCC 、可靠消息最終一致性
  • 可以混合使用,即通用業務使用可靠消息最終一致性,強一致要求的場景下視同TCC方案。
    TCC是三個首字母,Try-Confirm-Cancel,具體描述是將整個操作分為上面這三步。
    兩個微服務間同時進行Try,在Try的階段會進行數據的校驗,檢查,資源的預創建,如果都成功就會分別進行Confirm,如果兩者都成功則整個TCC事務完成。
    如果Confirm時有一個服務有問題,則會轉向Cancel,相當于進行Confirm的逆向操作。

    TCC流程

    可靠消息最終一致性

    此方案涉及 3 個模塊:

    • 上游應用,執行業務并發送 MQ 消息。
    • 可靠消息服務和 MQ 消息組件,協調上下游消息的傳遞,并確保上下游數據的一致性。
    • 下游應用,監聽 MQ 的消息并執行自身業務。
    可靠消息最終一致性
    第一階段:上游應用執行業務并發送 MQ 消息
    上游應用將本地業務執行和消息發送綁定在同一個本地事務中,保證要么本地操作成功并發送 MQ 消息,要么兩步操作都失敗并回滾。
    
    上游應用和可靠消息之間的業務交互圖如下:
    可靠消息最終一致性第一階段
    • 上游應用發送待確認消息到可靠消息系統。

    • 可靠消息系統保存待確認消息并返回。

    • 上游應用執行本地業務。

    • 上游應用通知可靠消息系統確認業務已執行并發送消息。

    • 可靠消息系統修改消息狀態為發送狀態并將消息投遞到 MQ 中間件。

      以上每一步都可能出現失敗情況,分析一下這 5 步出現異常后上游業務和消息發送是否一致:

    可靠消息最終一致性步驟記錄

    上游應用執行完成,下游應用尚未執行或執行失敗時,此事務即處于 BASE 理論的 Soft State 狀態。

    第二階段:下游應用監聽 MQ 消息并執行業務

    下游應用監聽 MQ 消息并執行業務,并且將消息的消費結果通知可靠消息服務。

    可靠消息的狀態需要和下游應用的業務執行保持一致,可靠消息狀態不是已完成時,確保下游應用未執行,可靠消息狀態是已完成時,確保下游應用已執行。
    下游應用和可靠消息服務之間的交互圖如下:

    • 下游應用監聽 MQ 消息組件并獲取消息。

    • 下游應用根據 MQ 消息體信息處理本地業務。

    • 下游應用向 MQ 組件自動發送 ACK 確認消息被消費。

    • 下游應用通知可靠消息系統消息被成功消費,可靠消息將該消息狀態更改為已完成。

      以上每一步都可能出現失敗情況,分析一下這 4 步出現異常后下游業務和消息狀態是否一致:

    可靠消息最終一致性第二階段
    通過分析以上兩個階段可能失敗的情況,為了確保上下游數據的最終一致性,在可靠消息系統中,
    需要開發 消息狀態確認 和 消息重發 兩個功能以實現 BASE 理論的 Eventually Consistent 特性。
    異常處理一:消息狀態確認
    可靠消息服務定時監聽消息的狀態,如果存在狀態為待確認并且超時的消息,則表示上游應用和可靠消息交互中的步驟 4 或者 5 出現異常。
    可靠消息則攜帶消息體內的信息向上游應用發起請求查詢該業務是否已執行。
    上游應用提供一個可查詢接口供可靠消息追溯業務執行狀態,如果業務執行成功則更改消息狀態為已發送,否則刪除此消息確保數據一致。
    
    具體流程如下:
    可靠消息最終一致性異常一
    • 可靠消息查詢超時的待確認狀態的消息。
    • 向上游應用查詢業務執行的情況。
    • 業務未執行,則刪除該消息,保證業務和可靠消息服務的一致性。業務已執行,則修改消息狀態為已發送,并發送消息到 MQ 組件。
    異常處理二:消息重發
    消息已發送則表示上游應用已經執行,接下來則確保下游應用也能正常執行。
    
    可靠消息服務發現可靠消息服務中存在消息狀態為已發送并且超時的消息,則表示可靠消息服務和下游應用中存在異常的步驟,
    無論哪個步驟出現異常,可靠消息服務都將此消息重新投遞到 MQ 組件中供下游應用監聽。
    
    下游應用監聽到此消息后,在保證冪等性的情況下重新執行業務并通知可靠消息服務此消息已經成功消費,
    最終確保上游應用、下游應用的數據最終一致性。具體流程如下:
    可靠消息最終一致性異常二
    • 可靠消息服務定時查詢狀態為已發送并超時的消息。
    • 可靠消息將消息重新投遞到 MQ 組件中。
    • 下游應用監聽消息,在滿足冪等性的條件下,重新執行業務。
    • 下游應用通知可靠消息服務該消息已經成功消費。

    通過消息狀態確認和消息重發兩個功能,可以確保上游應用、可靠消息服務和下游應用數據的最終一致性


  • 咨詢熱線: 400-885-0207
  • 售后熱線: 020―31706510
  • 公司電話: 020―31706510
技術QQ免費通話免費試用微信咨詢
JAVA工作流軟體-高校開發平臺-開源表單-工具-BPM業務流程管理-企業級開發-廣州流辰資訊技術有限公司 国产中文字幕在线观看|波多野结衣一区二区三区|十七岁日本免费完整版BD|中文字幕免费视频 三上悠亚在线免费观看|国产成人91精品免费看片熟女|边做边爱mp3在线播放免费观看|3d成人动漫在线观看 九九视频精品|和闺蜜一起出门带电动玩具|野花日本HD免费完整版高清版6|午夜福利视频免费 国产精品538一区二区在线|国产中文字幕在线观看|91精品国产午夜福利在线观看|三上悠亚作品在线观看 好姑娘8中文在线观看|97无码精品人妻一区二区|日本親子亂子倫XXXX50路|又大又粗又爽60分钟免费观看 最近中文字幕免费MV视频7|久久久亚洲欧洲日产国码二区|色综合天天综合网天天狠天天|性一交一乱一色一视频 欧美在线中文字幕|国产欧美精品一区二区三区|波多野结衣免费在线观看|亚洲午夜精品一区二区三区 少妇精品无码一区二区三区|国产A级毛片久久久久久精品|日本va欧美va精品发布|久久午夜无码鲁丝片午夜精品 国产精品久久久久久久久久久不卡|国产精品成人在线观看|91精品国产品国语在线不卡|三上悠亚观看 中文字幕av|国产精品|日本不卡视频|国产三级在线 波多野结衣加勒比|亚洲精品午夜久久久久久久久|亚洲欧美激情国产综合久久久|今天免费中文字幕视频 国产精品|免费一级毛片清高播放|乱子伦视频在线看|亚洲午夜久久久精品影院 向日葵app在线高清观看视频|国产欧美日韩一区二区三区|99国产精品久久久久久久成人热|国产美女精品一区二区三区 欧美日韩国产一区二区三区|人妻无码中文字幕免费视频蜜桃|最近中文字幕MV免费高清视频|波多野结衣在线观看视频 久久午夜无码鲁丝片午夜精品|欧美大片aaaaa免费观看|国产精品免费A V片在线观看|国产女人18毛片水真多1