分布式事務中常規MQ佇列訊息的處理流程和特點

2021-08-20 10:48:04 字數 1587 閱讀 7181

訊息中介軟體在分布式系統中的主要作用:非同步通訊、解耦、併發快取

流程圖:

訊息傳送的一致性如何保障

1.如果業務操作成功,執行訊息傳送前應用故障,訊息發不出去,導致訊息丟失(訂單系統與會計系統資料不一致)

2.如果業務操作成功,應用正常,但訊息系統故障或網路故障,也會導致訊息發不出去(訂單系統和會計系統的資料不一致)

訊息傳送一致性

1.主動方應用先把訊息傳送給訊息中介軟體,訊息狀態標記為"待確認"

2.訊息中介軟體收到訊息後,把訊息持久化到訊息儲存中,但並不向被動方應用投遞訊息

3.訊息中介軟體返回訊息持久化結果(ok/error),主動方應用根據返回結果進行判斷如何進行業務操作處理

4.業務操作完成後,把業務操作結果傳送給訊息中介軟體

5.訊息中介軟體收到業務操作結果後,根據業務結果進行處理

6.前面的正向流程都成功後,向被動方應用投遞訊息。

訊息傳送一致性的異常情況分析

1.從主動方應用的角度來分析:

異常情況

可能的狀態

一致性預傳送訊息失敗

訊息為進儲存、業務操作未執行(可能的原因,主動方應用、網路、訊息中介軟體、訊息儲存)

一致預傳送訊息後,主動方應用沒有收到返回訊息儲存的結果

訊息未儲存,業務操作未完成

訊息已進儲存,業務操作未完成  

一致不一致

收到訊息儲存成功的返回結果,但未執行業務操作就失敗

訊息已進儲存,業務操作未執行 

不一致二、1.佇列訊息模型的特點:

1.訊息生產者將訊息傳送到queue中,然後訊息消費者監聽queue並接收訊息

2.訊息被確認消費以後,就會從queue中刪除,所以訊息消費者不會消費到已經被消費的訊息

3.queue支援存在多個消費者,但是對某乙個訊息而言,只會有乙個消費者成功消費

2.mq佇列訊息的生產與消費常規流程

1.product生成訊息並傳送給mq

2.mq接受到訊息並將訊息資料持久化到訊息儲存(持久化操作作為可選配置)

3.mq向product返回訊息的執行結果(返回值、異常)

4.consumer監聽並消費mq中的訊息

5.consumer獲取到訊息後執行業務處理

6.consumer對已成功消費的訊息向mq進行ack確認(確認後的訊息將從mq中刪除)

常規的mq佇列訊息的處理流程無法實現訊息傳送的一致性

3.最終的方案

1.主動方應用先把訊息傳送給訊息中介軟體,訊息狀態標記為"待確認"

2.訊息中介軟體收到訊息後,把訊息持久化到訊息儲存中,但並不向被動方應用投遞訊息

3.訊息中介軟體返回訊息持久化結果(ok/error),主動方應用根據返回結果進行判斷如何進行業務操作處理

4.業務操作完成後,把業務操作結果傳送給訊息中介軟體

5.訊息中介軟體收到業務操作結果後,根據業務結果進行處理

6.被動方應用監聽並接收「待傳送」狀態的訊息,執行業務處理

7.業務處理完成後,向訊息中介軟體傳送ack,確認訊息已經收到(訊息中介軟體將從佇列中刪除該訊息)

分布式事務六 常規MQ佇列

分布式事務二 分布式事務處理三 分布式事務四 基於可靠訊息的最終一致性 分布式事務五 基於可靠訊息的最終一致性 異常流程 分布式事務六 常規mq佇列 分布式事務七 冪等性設計 分布式事務八 可靠訊息最終一致性方案 分布式事務九 基於可靠訊息的最終一致性 分布式事務10 最大努力通知形勢 柔性事務解決...

訊息佇列實現分布式事務

訊息佇列中的 事務 主要解決的是訊息生產者和訊息消費者的資料一致性問題。電商下單步驟 1 生成訂單 2 刪除購物車 在分布式系統中,任何乙個步驟都有可能失敗,可能出現訂單資料與購物車資料不一致的情況,比如說 1 建立了訂單,沒有清理購物車 2 訂單沒建立成功,購物車裡面的商品卻被清掉了。訂單系統給訊...

MQ實現分布式事務

什麼是分布式事務 傳統的事務是基於單資料庫的本地事務,簡單的來說,分布式事務就是實現跨資料庫的事務支援 cap理論 cap理論表面在分布式系統中,最多只能滿足c,a,p中的兩個 既然最多只能選擇兩個,那選擇哪兩個比較合適呢?對於乙個分布式系統來說,可用性和分割槽容錯性是必須要滿足的。對於可用性,如果...