精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

RocketMQ事務消息解析!

開發 架構
事務消息是 RocketMQ 提供的一種消息類型,支持在分布式場景下保障消息生產和本地事務的最終一致性。RocketMQ?采用了2PC的思想來實現了提交事務消息,同時增加一個補償邏輯來處理二階段超時或者失敗的消息。

單體架構下的事務

在單體系統的開發過程中,假如某個場景下需要對數據庫的多張表進行操作,為了保證數據的一致性,一般會使用事務,將所有的操作全部提交或者在出錯的時候全部回滾。

以創建訂單為例,假設下單后需要做兩個操作:

?在訂單表生成訂單。

在積分表增加本次訂單增加的積分記錄。

在單體架構下只需使用@Transactional開啟事務,就可以保證數據的一致性。

@Transactional
    public void order() {
        String orderId = UUID.randomUUID().toString();
        // 生成訂單
        orderService.createOrder(orderId);
        // 增加積分
        creditService.addCredits(orderId);
    }

?

但在分布式架構下,訂單系統和積分系統可能是兩個獨立的服務,此時就不能使用上述的方法開啟事務了,因為它們不處于同一個事務中。

  • 在出錯的情況下,無法進行全部回滾,只能對當前服務的事務進行回滾。

所以就有可能出現訂單生成成功但是積分服務增加積分失敗的情況(也可能相反),此時數據處于不一致的狀態。

分布式架構下的事務

以下單流程為例,在分布式架構下的處理流程如下:

?訂單服務生成訂單。

發送訂單生成的MQ消息,積分服務訂閱消息,有新的訂單生成之后消費消息,增加對應的積分記錄。

普通MQ消息存在的問題

?假如訂單創建成功,MQ消息發送成功,但是order方法在返回的前一刻,服務突然宕機。

由于開啟了事務,事務還未提交(方法結束后才會正常提交)。

所以訂單表并未生成記錄,但是MQ卻已經發送成功并且被積分服務消費,此時就會存在訂單未創建但是積分記錄增加的情況。

假如先發送MQ消息再創建訂單,如果MQ消息發送成功,創建訂單失敗,那么同樣處于不一致的狀態。

@Transactional
    public void order() {
        String orderId = UUID.randomUUID().toString();
        // 創建訂單
        Order order = orderService.createOrder(orderDTO.getOrderId());
        // 發送訂單創建的MQ消息
        sendOrderMessge(order);
        return;
    }

可以使用RocketMQ事務消息解決上述問題。

RocketMQ事務消息基礎流程

?Apache RocketMQ在4.3.0版中已經支持分布式事務消息。

事務消息是 RocketMQ 提供的一種消息類型,支持在分布式場景下保障消息生產和本地事務的最終一致性。

RocketMQ采用了2PC的思想來實現了提交事務消息,同時增加一個補償邏輯來處理二階段超時或者失敗的消息。

基本流程

?第一階段

  • 發送 Message,Half Message,即半事務消息。
  • 此類型的 Message 是不會被 Consumer 消費。

第二階段:如果半事務消息投遞成功,則會開始執行本地事務。

分為如下三種 Case:

  • 本地事務執行成功:
  • 會向 Broker 發送 commit 消息,被 commit 過后的 Message 才能被 Consumer 消費到。
  • 本地事務執行失敗:
  • 會向 Broker 發送 rollback 消息,Broker 則會將剛剛投遞的半事務消息刪除,從而保證上下游數據的一致性。

  • 如果 Producer 實例或者網絡出現了問題,Producer 沒能及時地將本地事務執行的結果通知 Broker。

  • Broker 會通過掃描發現某條 Message 長時間處于半事務消息狀態。

  • Broker 會主動地向 Producer 詢問此 Message 對應的事務狀態。

值得注意的是:

?

RocketMQ 并不會無休止的的信息事務狀態回查,默認回查 15 次。

如果 15 次回查還是無法得知事務狀態,RocketMQ 默認回滾該消息。

RocketMQ事務消息使用限制

?

事務消息不支持延時消息和批量消息。

事務性消息可能不止一次被檢查或消費,所以消費者端需要做好消費冪等。

事務消息的生產者 ID 不能與其他類型消息的生產者 ID 共享。

  • 與其他類型的消息不同,事務消息允許反向查詢、MQ服務器能通過它們的生產者 ID 查詢到消費者。

RocketMQ事務消息基本原理

采用2PC兩階段設計。

?

將 Message 原本真實的 Topic 和 MessageQueue 進行備份。

  • 放入到PROPERTY_REAL_TOPIC、PROPERTY_REAL_QUEUE_ID中保存。

將消息投遞到一個內部Topic中RMQ_SYS_TRANS_HALF_TOPIC,該隊列專門存儲事務消息。

所有的 Half Message 全部都寫入到 queueId 為 0 的 MessageQueue。

因為一個 Topic 下只有 1 個 MessageQueue:

  • 這個 Topic 下的所有 Message 就是全局有序的,它們會按照先來后到的順序被消費。

如果本地事務執行成功進行Commit,則將RMQ_SYS_TRANS_HALF_TOPIC 隊列中的消息投遞到真實的Topic中,供后續流程執行。

  • 并刪除這條 Half Message ,但刪除也是假刪除,只是給 Message 打上一個刪除的 Tag。

如果本地事務執行失敗進行rollback,則直接刪除這條 Half Message ,但刪除也是假刪除。

如果本地事務遲遲沒有返回結果 (默認時間是6s),則會觸發事務回查機制

  • 執行回查之前需要校驗檢查次數是否到達了最大值(需要手動設置,沒有默認值)。
  • 或者是當前 Half Message 存在是否超過了 Message 保存的上限,即 3天。
  • 如果滿足上面條件中的一種Half Message 會被放進 TRANS_CHECK_MAX_TIME_TOPIC Topic 當中。
  • 一旦判定為需要執行事務回查邏輯,那么當前這條 Half Message 就算已經被消費了。
  • 在沒達到最大的校驗次數之前,都還需要將其投遞到事務隊列當中,以便下次重試時再次執行 Check 邏輯。
  • 如果回查成功則刪除投遞的 Half Message。

源碼解讀

發送事務消息調用的是TransactionMQProducer的sendMessageInTransaction方法:

主要有以下幾個步驟:

?獲取事務監聽器TransactionListener,如果獲取為空或者本地事務執行器LocalTransactionExecuter為空將拋出異常。

因為需要通過TransactionListener或者LocalTransactionExecuter來執行本地事務,所以不能為空。

在消息中設置prepared屬性,此時與普通消息(非事務消息)相比多了PROPERTY_TRANSACTION_PREPARED屬性。

調用send方法發送prepared消息也就是half消息,發送消息的流程與普通消息一致。

根據消息的發送結果判斷:

  • 如果發送成功執行本地事務,并返回本地事務執行結果狀態,如果返回的執行狀態結果為空,將本地事務狀態設置為UNKNOW。
  • 發送成功之外的其他情況,包括FLUSH_DISK_TIMEOUT刷盤超時、FLUSH_SLAVE_TIMEOUT和SLAVE_NOT_AVAILABLE從節點不可用三種情況。
  • 此時意味著half消息發送失敗,本地事務狀態置為ROLLBACK_MESSAGE回滾消息。

調用endTransaction方法結束事務。

參考

《RocketMQ技術內幕》

https://github.com/apache/rocketmq/blob/master/docs/cn/RocketMQ_Example.md。

https://github.com/apache/rocketmq/blob/master/docs/cn/design.md。

責任編輯:姜華 來源: 月伴飛魚
相關推薦

2023-07-17 08:34:03

RocketMQ消息初體驗

2024-11-11 13:28:11

RocketMQ消息類型FIFO

2021-10-03 21:41:13

RocketMQKafkaPulsar

2021-04-15 09:17:01

SpringBootRocketMQ

2024-09-25 08:32:05

2024-08-22 18:49:23

2024-02-04 09:02:29

RocketMQ項目處理器

2023-09-04 08:00:53

提交事務消息

2024-10-11 09:15:33

2022-07-04 11:06:02

RocketMQ事務消息實現

2024-06-13 09:25:14

2024-10-22 08:01:15

2021-03-04 06:49:53

RocketMQ事務

2022-12-22 10:03:18

消息集成

2022-06-02 08:21:07

RocketMQ消息中間件

2023-07-18 09:03:01

RocketMQ場景消息

2025-04-09 08:20:00

RocketMQ消息隊列開發

2022-03-31 08:26:44

RocketMQ消息排查

2023-12-21 08:01:41

RocketMQ消息堆積

2021-07-14 17:18:14

RocketMQ消息分布式
點贊
收藏

51CTO技術棧公眾號

国产成人一级片| 欧美国产精品日韩| 欧美日韩亚洲一二三| 欧美伦理影视网| 欧美成人有码| 日韩成人黄色av| 岛国av在线免费| 狠狠躁少妇一区二区三区| 久久无码av三级| 成人激情春色网| 久久伊人成人网| 九九亚洲视频| 日韩欧美高清在线| 国产福利视频在线播放| 男女视频在线观看免费| 国产精品99久| 国产精品aaa| 亚洲精品天堂成人片av在线播放 | 中文有码在线播放| 91精品秘密在线观看| 亚洲国产黄色片| 污网站免费在线| 欧美日韩国产观看视频| 亚洲日本中文字幕区| 欧美日韩一区二区三区在线观看免| 天堂网一区二区三区| 亚洲欧美文学| 色一区av在线| 日本xxx在线播放| 视频一区中文字幕精品| 欧美在线观看一二区| 男女超爽视频免费播放| 日韩伦理在线电影| 97超碰欧美中文字幕| 91精品婷婷国产综合久久蝌蚪| 精人妻无码一区二区三区| 亚洲日本久久| 久久久久久久久久久久久久久久久久av | 国产午夜精品理论片在线| 欧美一级三级| 精品福利一区二区三区| 欧美性猛交xx| 99re8精品视频在线观看| 欧美主播一区二区三区| 无码人妻丰满熟妇区毛片| 国内精彩免费自拍视频在线观看网址| 一区二区在线观看视频| 综合色婷婷一区二区亚洲欧美国产| 国产粉嫩一区二区三区在线观看 | 精灵使的剑舞无删减版在线观看| 国产精品网站在线| 免费av成人在线| 久久久久日韩精品久久久男男 | 亚洲精选一二三| 亚洲一区二区三区精品在线观看 | 国产视频在线观看视频| 精品一区二区成人精品| 国产精品欧美日韩| 怡春院在线视频| 九一九一国产精品| 成人在线精品视频| 国产特级黄色片| 国产精品77777| 亚洲自拍偷拍色片视频| 精品人妻一区二区三区潮喷在线| 亚洲欧洲综合| 91高清视频免费| 国产免费一区二区三区四区五区| 视频一区二区欧美| 91成人精品网站| 日本最新中文字幕| 99在线精品免费视频九九视| 91精品国产91| 波多野结衣大片| 日本欧美一区二区| 成人在线视频福利| 成人免费公开视频| 成人aa视频在线观看| 免费成人av网站| 国产日本在线| 久久久久国色av免费看影院| 国产欧美日韩伦理| 黄色av免费在线看| 国产精品免费视频网站| 国产成人亚洲综合无码| av成人福利| 色94色欧美sute亚洲线路二| 狠狠热免费视频| 亚洲欧美在线综合| 亚洲级视频在线观看免费1级| 亚洲熟妇无码av| 免费在线观看污网站| 欧美三级网站| 欧美精品一卡两卡| 91精品国产三级| 日韩精品中文字幕一区二区 | 天天色综合久久| 国产欧美日韩精品一区| 久久久无码中文字幕久...| 色噜噜狠狠狠综合欧洲色8| 精品露脸国产偷人在视频| 日韩无一区二区| 精品日韩久久久| 日韩高清在线| 91精品国产91久久综合桃花| 插我舔内射18免费视频| 久久99国产成人小视频| 久久精品中文字幕电影| 国产无套在线观看| 免费人成黄页网站在线一区二区| 国产日韩欧美视频在线| 天天干天天操av| 亚洲人精品午夜| 欧美少妇性生活视频| 日韩精品中文字幕吗一区二区| 国产一区二区日韩| 日韩av在线播| 蜜臀91精品一区二区三区| 国产综合精品一区二区三区| 黄色网页在线免费观看| 色婷婷综合激情| 欧美激情国内自拍| 成人羞羞视频播放网站| 97精品国产aⅴ7777| 99精品视频免费看| 国产精品美女久久福利网站| 一本久道综合色婷婷五月| youjizzjizz亚洲| 精品国产一区二区三区在线观看| 天堂中文字幕在线观看| 国产成人精品免费在线| 91免费视频黄| 浮妇高潮喷白浆视频| 免费黄色网页在线观看| 色哟哟国产精品| www.17c.com喷水少妇| 亚洲欧美伊人| 亚洲在线免费视频| yw视频在线观看| 欧美性猛交xxxx久久久| 免费的av网站| 国产精品五区| 国产精品久久波多野结衣| a级片国产精品自在拍在线播放| 欧美日韩精品三区| 你懂得在线观看| 欧美一级网站| 欧美一区二区三区在线免费观看| 欧美办公室脚交xxxx| 亚洲精品国产美女| 天堂网一区二区三区| av男人天堂一区| 免费看的黄色大片| 精品一区毛片| 日韩av快播网址| 高清在线观看av| 欧美视频在线播放| 亚洲精品天堂网| 欧美aaa在线| 黄瓜视频免费观看在线观看www| 人人玩人人添人人澡欧美| 久久精品视频一| 精品久久无码中文字幕| 亚洲最新视频在线播放| 欧美xxxxxbbbbb| 亚洲国产mv| 久久久久久久久久久久久久一区| 亚洲国产福利| 神马久久久久久| 涩涩视频在线观看| 亚洲国产精华液网站w| 亚洲图片 自拍偷拍| 欧美日本中文| 精品国产乱码久久久久久丨区2区| free性欧美16hd| 日韩视频在线一区二区| 国产大片中文字幕在线观看| 国产在线一区观看| 国产片侵犯亲女视频播放| 成人资源在线| 亚洲一线二线三线久久久| 91香蕉国产在线观看| 黄网页免费在线观看| 精品人在线二区三区| 国产午夜精品无码| 国产成人8x视频一区二区| 黄页网站大全在线观看| 日韩国产欧美一区二区| 91青青草免费在线看| а√天堂资源官网在线资源| 亚洲精品永久免费| 国产三级第一页| 欧美香蕉大胸在线视频观看| 三上悠亚ssⅰn939无码播放| 日韩av中文在线观看| 99久久99久久精品| 国产在视频线精品视频www666| 国产欧美精品一区二区| 爱福利在线视频| 在线观看视频99| 天堂中文在线资源| 91精品在线一区二区| 日韩欧美一级视频| 中文字幕一区二区三区在线不卡 | 成人综合婷婷国产精品久久免费| 女人和拘做爰正片视频| 久久美女精品| 久久精品国产综合精品| 韩国三级成人在线| 国产激情综合五月久久| av在线加勒比| 久久影院在线观看| 国产高清美女一级毛片久久| 日韩一级片网址| 中文在线免费观看| 欧美性开放视频| 香蕉视频一区二区| 亚洲激情中文1区| 超碰人人人人人人人| 91女人视频在线观看| 国产xxx在线观看| 久久国产夜色精品鲁鲁99| 欧美污视频网站| 日韩午夜av| 国产毛片久久久久久国产毛片| 国产亚洲一区二区三区啪| 国产嫩草一区二区三区在线观看| 成人黄色91| 国产在线拍偷自揄拍精品| 国产亚洲精品成人a| 欧美日韩在线观看视频小说| 韩国一区二区三区美女美女秀| 日日夜夜亚洲| 国产精品无av码在线观看| 欧美二三四区| 538国产精品视频一区二区| av免费在线观看网址| 中文字幕一区二区精品| av资源网站在线观看| 亚洲美女在线看| 欧美一区二区视频| 日韩精品在线视频| 三级av在线播放| 亚洲久久久久久久久久| 天天综合永久入口| 欧美videos大乳护士334| 国产强伦人妻毛片| 日韩欧美一二三区| 国产sm主人调教女m视频| 91精品久久久久久久91蜜桃| 自拍偷拍第八页| 欧美日韩激情一区二区| 一二区在线观看| 91精品欧美综合在线观看最新 | 品久久久久久久久久96高清| 白嫩白嫩国产精品| 91精品网站| 久久久久97| 日本视频一区二区不卡| 俺要去色综合狠狠| 日韩欧美精品一区二区三区经典 | 91九色国产ts另类人妖| 正在播放日韩欧美一页 | 国产伦精品一区二区三区高清| 中文字幕av一区二区三区四区| 国产高清一区二区三区| 卡通动漫精品一区二区三区| 欧美福利精品| 日韩电影二区| 99久久99久久精品| 亚洲欧美成人| 免费看a级黄色片| 美女精品一区二区| 亚洲精品久久久久久| 老司机午夜精品| 曰本三级日本三级日本三级| 91在线丨porny丨国产| 国产sm调教视频| 亚洲男帅同性gay1069| 日韩成人免费在线视频| 日本韩国欧美在线| 久久久女人电视剧免费播放下载 | 国产手机精品视频| 国产精品久久影院| 色噜噜日韩精品欧美一区二区| 国产精品国产三级国产普通话三级| 美女福利视频网| 亚洲福利视频一区| 国产无码精品一区二区| 色94色欧美sute亚洲线路二 | 亚洲男人天堂古典| 欧美人体大胆444www| 久久伊人精品天天| 惠美惠精品网| 国产精品久久久久9999| av成人免费| 狠狠色综合色区| 色综合天天爱| 欧美污视频网站| 国产精品一区二区三区四区| 国产手机在线观看| 一区二区成人在线观看| 中文字幕一区二区人妻| 精品久久久久久久久久久久包黑料| 高清美女视频一区| 欧美福利在线观看| 成人在线高清| 成人动漫视频在线观看完整版| 久久99国内| 成人性生活视频免费看| 精品一区二区三区在线观看国产 | 国产成人久久精品77777综合| 亚洲另类图片色| 国精产品一区| 国产精品久久久久久中文字| 黄色美女久久久| 神马午夜伦理影院| 久久精品国产久精国产爱| 韩国无码一区二区三区精品| 一区av在线播放| 99久久精品日本一区二区免费| 国产亚洲综合久久| 黄色综合网址| 蜜桃网站成人| 性感少妇一区| 亚洲熟女乱综合一区二区三区| 国产精品福利一区二区三区| 欧美黄色一级大片| 日韩av影视综合网| av大片在线| 91视频8mav| 永久亚洲成a人片777777| 久久撸在线视频| 国产精品久久久久久久第一福利 | 久久精品国产一区二区三区免费看| 天堂www中文在线资源| 亚洲理论在线观看| 国产内射老熟女aaaa∵| 久久五月天综合| 国产95亚洲| 伊人色综合影院| 激情av综合网| 破处女黄色一级片| 日韩一区二区影院| 欧美激情成人动漫| 国产精品久久久久久久久久久久冷 | www.亚洲男人天堂| 电影天堂国产精品| 日韩欧美手机在线| 美女视频黄 久久| 一级黄色片大全| 综合伊思人在钱三区| 国产精品制服诱惑| 精品不卡视频| 无码人妻丰满熟妇区毛片蜜桃精品| 玉米视频成人免费看| 亚洲高清视频网站| 久久久免费观看视频| 国产成人tv| 欧美 日本 亚洲| 国产日韩亚洲欧美综合| 看黄色一级大片| 久久久国产精品亚洲一区| 日韩精品一区国产| 久色视频在线播放| 国产日韩成人精品| 亚洲一区二区三区网站| 中文字幕精品网| 日本在线视频一区二区三区| 国产中文字幕乱人伦在线观看| eeuss鲁片一区二区三区在线观看 eeuss影院一区二区三区 | 亚洲欧洲韩国日本视频| 国产人妖一区二区三区| 久久精品亚洲精品| 都市激情亚洲| 88av.com| 国产精品成人免费| 97在线公开视频| 久久99久久久久久久噜噜| 国产精品久久久久久久久久辛辛| 成品人视频ww入口| 国产视频一区在线观看| 国产三级漂亮女教师| 91精品国产精品| 日韩久久综合| 日韩精品在线播放视频| 欧美性极品xxxx做受| 黄色片网站在线| 久久99精品国产一区二区三区| 亚洲一区国产一区| 爱爱的免费视频| 欧美日韩高清不卡| а√天堂中文在线资源8| 一区二区三区不卡在线| 成人久久视频在线观看| 最近日韩免费视频| 精品少妇v888av| 成人婷婷网色偷偷亚洲男人的天堂| 91传媒理伦片在线观看| 欧美日韩免费高清一区色橹橹|