成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

分布式事務解決方案—事務消息

云計算 分布式
RocketMQ的事務消息保證了本地事務與事務消息發送的一致性,本地事務執行成功,事務消息方可投遞到消費者端處理。

普通消息難以保證生產者的事務操作與消息發送的原子性,所以可能會導致數據不一致;RocketMQ提供了一種在普通消息基礎上支持二階段的提交能力事務消息,事務消息可以支持在分布式場景下保障消息生產和本地事務的最終一致性。

1、事務消息基本概念

(1)半消息 

    生產者發送的消息首先作為“半消息”存儲在Broker中,對消費者不可見。Broker 等待生產者確認消息狀態(提交或回滾),事務消息有3種狀態如下所示:

狀態

狀態的描述

TransactionStatus.CommitTransaction

提交事務,表示允許消費者消費(使用)這條消息

TransactionStatus.RollbackTransaction

回滾事務,表示消息將被刪除,不允許使用

TransactionStatus.Unknown

中間狀態,表示需要MQ向消息發送方進行檢查以確定狀態

(2)事務狀態檢查

    如果生產者未及時確認,Broker會定時回查生產者的事務的最終狀態,通過回查的最終狀態決定半消息是提交還是回滾操作。

(3)接口API

   RocketMQ提供了兩大重要的接口,分別是TransactionMQProducer 和TransactionListener,這個兩個接口主要用于發送事務消息并處理本地事務邏輯。

(4)存儲與可靠性

    事務消息存儲在Broker的專門的隊列中,通過記錄事務狀態日志來確保高可用性和一致性。相對于普通消息,事務消息增加了半消息階段和狀態檢查機制,然后通過狀態檢查機制來保證分布式下數據的最終一致性。

2、事務消息的實現

RocketMQ事務消息的實現原理圖如下所示:

圖片圖片

第一階段

A服務中生產者發送半消息至RocketMQ的服務端,RocketMQ服務端將消息持久化后,向生產者返回ACK確認消息,表示消息已經發送成功,此時消息會持久化在RocketMQ的隊列中,這個消息對于消費者暫不能消費。

A服務執行本地的業務邏輯,然后根據A服務本地事務執行結果確定第二階段的提交/回滾操作。

第二階段

(1)A服務的本地事務執行成功,此時消息的確認結果為提交,那么RocketMQ服務端將半消息事務標記為可消費的完整消息,如下圖所示:

圖片圖片

消息變成完整消息后就可以被消費者消費了。

(2)A服務的本地事務執行失敗,此時消息的確認結果為回滾,那么RocketMQ將半事務消息刪除,這樣就不會投遞給消費者消費。

(3)為了保證第二階段的數據一致性,RocketMQ提供了針對半消息的消息狀態回查機制,即就是如果RocketMQ服務端未收到生產者提交的二次確認結果或者收到的確認結果為未知狀態(Unknow),RocketMQ服務端會定期對消息生產者發起回查機制。

    當A服務接收到回查任務的時候,會檢查本地事務執行的最終結果,然后提交事務執行的最終結果給RocketMQ服務端,RocketMQ服務端根據最終的執行結果決定這個半消息是提交還是回滾。

總結

(1)RocketMQ的事務消息保證了本地事務與事務消息發送的一致性,本地事務執行成功,事務消息方可投遞到消費者端處理。

(2)未收到生產者提交的二次確認結果或者收到的確認結果為未知狀態的半消息,RocketMQ提供了消息狀態回查機制,通過回查生產者端的本地事務的執行結果來判斷半消息的最終狀態。

(3)RocketMQ事務消息提供了超時機制,即半事務消息被生產者發送到Broker后,如果在指定時間內(默認4小時)服務端無法確認提交或者回滾狀態,則消息默認會被回滾。

(4)RocketMQ事務消息無法實現嚴格的實時一致性,只能保證最終一致性,所以針對那些實時性要求高的場景下RocketMQ事務消息是不適合的。

(5)事務執行時間過長會影響系統整體吞吐量,同時在消費者端需要消費者自行的實現消息的冪等處理。

責任編輯:武曉燕 來源: 龍蝦編程
相關推薦

2023-09-14 15:44:46

分布式事務數據存儲

2020-05-28 09:35:05

分布式事務方案

2025-04-28 00:44:04

2024-03-26 12:08:53

分布式事務存儲

2019-01-11 18:22:07

阿里巴巴技術開源

2010-07-21 13:53:41

SQL Server分

2025-05-07 00:10:00

分布式事務TCC模式

2021-09-28 09:43:11

微服務架構技術

2019-07-25 15:32:35

分布式事務微服務系統架構

2024-12-09 09:35:00

2019-09-09 10:09:51

分布式事務 數據庫

2024-06-13 08:04:23

2023-11-30 07:19:08

.NET開源

2021-06-28 10:03:44

分布式數據庫架構

2020-03-31 16:13:26

分布式事務方案TCC

2024-06-13 09:25:14

2022-03-24 07:51:27

seata分布式事務Java

2022-06-27 08:21:05

Seata分布式事務微服務

2023-08-17 10:23:07

擴展方案

2022-06-21 08:27:22

Seata分布式事務
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: www.日韩免费 | 欧美在线a| 日韩成人中文字幕 | 精品视频久久久久久 | 99免费在线视频 | 成人在线免费网站 | 国产一区二区三区在线免费观看 | 18av在线播放| www.精品一区 | 日韩欧美成人精品 | 精品国产欧美一区二区 | 精品一区二区久久久久久久网精 | 亚洲欧美激情视频 | 久久久久久91| 99精品免费在线观看 | 亚洲精品一区二区在线观看 | 黄视频国产 | 国产蜜臀97一区二区三区 | 亚洲九九色 | 日韩欧美三区 | 精品视频一区二区三区 | 国产精品视频一区二区三区不卡 | 国产精品123区 | 欧美成人精品激情在线观看 | 精品国产欧美在线 | 91精品国产91久久久久久吃药 | 影音先锋成人资源 | 国产一区www| 啪一啪| 一级欧美 | 日韩精品久久久久久 | 99久久国产 | 特级一级黄色片 | 午夜三级在线观看 | 日本韩国电影免费观看 | 精品乱码一区二区三四区视频 | 九色av| 国产乱码精品一品二品 | 日本欧美国产 | 91成人精品| 国产精品一区二区在线 |