本方案是將分布式事務拆分成多個本地事務來完成,並且由訊息佇列非同步協調完成,如下圖:
下邊以下單減少庫存為例來說明: 1
、訂單服務和庫存服務完成檢查和預留資源。 2
、訂單服務在本地事務中完成新增訂單表記錄和新增
「減少庫存任務訊息」。
3、由定時任務根據訊息表的記錄傳送給
mq通知庫存服務執行減庫存操作。 4
、庫存服務執行減少庫存,並且記錄執行訊息狀態(為避免重複執行訊息,在執行減庫存之前查詢是否執行過此
訊息)。 5
、庫存服務向
mq傳送完成減少庫存的訊息。 6
、訂單服務接收到完成庫存減少的訊息後刪除原來新增的
「減少庫存任務訊息」。
實現最終事務一致要求:預留資源成功理論上要求正式執行成功,如果執行失敗會進行重試,要求業務執行方法實
現冪等。
優點 : 由
mq按非同步的方式協調完成事務,效能較高。
缺點:
此方式基於關聯式資料庫本地事務來實現,會出現頻繁讀寫資料庫記錄,浪費資料庫資源。
事務 分布式事務解決方案
事務acid特性 事務隔離級別 指的是讀和寫同時出現時出現的資料不一致問題。事務的一致性問題 存在問題問題描述 髒讀 dirty read 針對的是單條資料。即乙個更新操作a修改了某一條資料,但尚未提交該事務,此時另乙個讀操作b來查詢該條資料,讀到的是修改後的但尚未提交的資料。不可重複讀 unrep...
分布式事務解決方案
一 結合mq訊息中介軟體實現的可靠訊息最終一致性 二 tcc補償性事務解決 三 最大努力通知型方案 第一種方案 可靠訊息最終一致性,需要業務系統結合mq訊息中介軟體實現,在實現過程中需要保證訊息的成功傳送及成功消費。即需要通過業務系統控制mq的訊息狀態 第二種方案 tcc補償性,分為三個階段tryi...
分布式事務解決方案
當資料庫單錶一年產生的資料超過1000w,那麼就要考慮分庫分表,具體分庫分表的原理在此不做解釋,以後有空詳細說,簡單的說就是原來的乙個資料庫變成了多個資料庫。這時候,如果乙個操作既訪問01庫,又訪問02庫,而且要保證資料的一致性,那麼就要用到分布式事務。所謂的soa化,就是業務的服務化。比如原來單機...