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

分布式事務(wù)解決方案—事務(wù)消息

云計(jì)算 分布式
RocketMQ的事務(wù)消息保證了本地事務(wù)與事務(wù)消息發(fā)送的一致性,本地事務(wù)執(zhí)行成功,事務(wù)消息方可投遞到消費(fèi)者端處理。

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

1、事務(wù)消息基本概念

(1)半消息 

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

狀態(tài)

狀態(tài)的描述

TransactionStatus.CommitTransaction

提交事務(wù),表示允許消費(fèi)者消費(fèi)(使用)這條消息

TransactionStatus.RollbackTransaction

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

TransactionStatus.Unknown

中間狀態(tài),表示需要MQ向消息發(fā)送方進(jìn)行檢查以確定狀態(tài)

(2)事務(wù)狀態(tài)檢查

    如果生產(chǎn)者未及時確認(rèn),Broker會定時回查生產(chǎn)者的事務(wù)的最終狀態(tài),通過回查的最終狀態(tài)決定半消息是提交還是回滾操作。

(3)接口API

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

(4)存儲與可靠性

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

2、事務(wù)消息的實(shí)現(xiàn)

RocketMQ事務(wù)消息的實(shí)現(xiàn)原理圖如下所示:

圖片圖片

第一階段

A服務(wù)中生產(chǎn)者發(fā)送半消息至RocketMQ的服務(wù)端,RocketMQ服務(wù)端將消息持久化后,向生產(chǎn)者返回ACK確認(rèn)消息,表示消息已經(jīng)發(fā)送成功,此時消息會持久化在RocketMQ的隊(duì)列中,這個消息對于消費(fèi)者暫不能消費(fèi)。

A服務(wù)執(zhí)行本地的業(yè)務(wù)邏輯,然后根據(jù)A服務(wù)本地事務(wù)執(zhí)行結(jié)果確定第二階段的提交/回滾操作。

第二階段

(1)A服務(wù)的本地事務(wù)執(zhí)行成功,此時消息的確認(rèn)結(jié)果為提交,那么RocketMQ服務(wù)端將半消息事務(wù)標(biāo)記為可消費(fèi)的完整消息,如下圖所示:

圖片圖片

消息變成完整消息后就可以被消費(fèi)者消費(fèi)了。

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

(3)為了保證第二階段的數(shù)據(jù)一致性,RocketMQ提供了針對半消息的消息狀態(tài)回查機(jī)制,即就是如果RocketMQ服務(wù)端未收到生產(chǎn)者提交的二次確認(rèn)結(jié)果或者收到的確認(rèn)結(jié)果為未知狀態(tài)(Unknow),RocketMQ服務(wù)端會定期對消息生產(chǎn)者發(fā)起回查機(jī)制。

    當(dāng)A服務(wù)接收到回查任務(wù)的時候,會檢查本地事務(wù)執(zhí)行的最終結(jié)果,然后提交事務(wù)執(zhí)行的最終結(jié)果給RocketMQ服務(wù)端,RocketMQ服務(wù)端根據(jù)最終的執(zhí)行結(jié)果決定這個半消息是提交還是回滾。

總結(jié)

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

(2)未收到生產(chǎn)者提交的二次確認(rèn)結(jié)果或者收到的確認(rèn)結(jié)果為未知狀態(tài)的半消息,RocketMQ提供了消息狀態(tài)回查機(jī)制,通過回查生產(chǎn)者端的本地事務(wù)的執(zhí)行結(jié)果來判斷半消息的最終狀態(tài)。

(3)RocketMQ事務(wù)消息提供了超時機(jī)制,即半事務(wù)消息被生產(chǎn)者發(fā)送到Broker后,如果在指定時間內(nèi)(默認(rèn)4小時)服務(wù)端無法確認(rèn)提交或者回滾狀態(tài),則消息默認(rèn)會被回滾。

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

(5)事務(wù)執(zhí)行時間過長會影響系統(tǒng)整體吞吐量,同時在消費(fèi)者端需要消費(fèi)者自行的實(shí)現(xiàn)消息的冪等處理。

責(zé)任編輯:武曉燕 來源: 龍蝦編程
相關(guān)推薦

2020-05-28 09:35:05

分布式事務(wù)方案

2023-09-14 15:44:46

分布式事務(wù)數(shù)據(jù)存儲

2025-04-28 00:44:04

2024-03-26 12:08:53

分布式事務(wù)存儲

2019-01-11 18:22:07

阿里巴巴技術(shù)開源

2010-07-21 13:53:41

SQL Server分

2025-05-07 00:10:00

分布式事務(wù)TCC模式

2021-09-28 09:43:11

微服務(wù)架構(gòu)技術(shù)

2019-07-25 15:32:35

分布式事務(wù)微服務(wù)系統(tǒng)架構(gòu)

2024-12-09 09:35:00

2019-09-09 10:09:51

分布式事務(wù) 數(shù)據(jù)庫

2024-06-13 08:04:23

2023-11-30 07:19:08

.NET開源

2021-06-28 10:03:44

分布式數(shù)據(jù)庫架構(gòu)

2020-03-31 16:13:26

分布式事務(wù)方案TCC

2024-06-13 09:25:14

2022-03-24 07:51:27

seata分布式事務(wù)Java

2022-06-27 08:21:05

Seata分布式事務(wù)微服務(wù)

2023-08-17 10:23:07

擴(kuò)展方案

2017-07-26 15:08:05

大數(shù)據(jù)分布式事務(wù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 亚洲成人福利 | 91精品国产91久久久久久三级 | 国产精品a一区二区三区网址 | 久久黄网 | 色狠狠一区 | 欧美日韩不卡在线 | 久久久黑人 | 午夜色播 | 国产亚洲精品久久久久动 | 午夜精品一区二区三区在线 | 亚洲成人一区二区在线 | 欧美激情一区二区三区 | 久久精品国产免费一区二区三区 | 欧美国产激情二区三区 | 99riav3国产精品视频 | 91精品国产综合久久久久久丝袜 | 毛片一级片 | 亚洲日本成人 | 日韩天堂av| 国产伊人精品 | 日韩精品1区2区 | 亚洲韩国精品 | 欧美一区二区三区视频 | 国产成人99久久亚洲综合精品 | 久久久片 | 国产一区二区中文字幕 | 精品视频一二区 | 日韩免费视频一区二区 | av免费看在线 | 成人免费视频网站在线观看 | 国产在线一级片 | 91久久精品视频 | 亚洲一区| 国产精品一区二区在线播放 | 精品久久久久久久久久久久 | 毛片在线免费 | 91中文字幕 | 久久美国| 日韩av一区二区在线观看 | 亚洲欧美一区二区三区国产精品 | 丝袜久久 |