51视频社区香蕉日本-51视频手机在线播放-51视频网-51视频无码-51视频在线-51视频在线观看成人-51丨丝袜丨国产探花播放黑料-51丝袜电影资源网站-51丝袜视频在线-51私拍

當(dāng)前位置: 首頁(yè) > 產(chǎn)品大全 > 阿里巴巴微服務(wù)分布式事務(wù)組件Seata詳解 從2PC到Saga的演進(jìn)與應(yīng)用

阿里巴巴微服務(wù)分布式事務(wù)組件Seata詳解 從2PC到Saga的演進(jìn)與應(yīng)用

阿里巴巴微服務(wù)分布式事務(wù)組件Seata詳解 從2PC到Saga的演進(jìn)與應(yīng)用

一、引言:微服務(wù)與分布式事務(wù)的挑戰(zhàn)

在微服務(wù)架構(gòu)中,業(yè)務(wù)邏輯被拆分為多個(gè)獨(dú)立部署的服務(wù),每個(gè)服務(wù)擁有獨(dú)立的數(shù)據(jù)庫(kù)。當(dāng)一項(xiàng)業(yè)務(wù)操作需要跨多個(gè)服務(wù)更新數(shù)據(jù)時(shí),如何保證所有服務(wù)的數(shù)據(jù)一致性,成為一個(gè)核心挑戰(zhàn)。傳統(tǒng)單機(jī)數(shù)據(jù)庫(kù)的事務(wù)(ACID)無(wú)法直接跨越服務(wù)邊界,這就是分布式事務(wù)問(wèn)題。

阿里巴巴開(kāi)源的 Seata(Simple Extensible Autonomous Transaction Architecture) 應(yīng)運(yùn)而生,它旨在以高性能和低侵入的方式,解決微服務(wù)架構(gòu)下的分布式事務(wù)難題。

二、Seata 核心架構(gòu)與核心概念

Seata 的設(shè)計(jì)包含三大核心角色:

  1. Transaction Coordinator (TC): 事務(wù)協(xié)調(diào)器。它是獨(dú)立部署的服務(wù)器,負(fù)責(zé)維護(hù)全局事務(wù)和分支事務(wù)的狀態(tài),驅(qū)動(dòng)全局事務(wù)的提交或回滾。這是Seata的大腦。
  2. Transaction Manager (TM): 事務(wù)管理器。它嵌入在微服務(wù)應(yīng)用中,負(fù)責(zé)定義全局事務(wù)的邊界,開(kāi)啟、提交或回滾全局事務(wù)。TM與TC通信。
  3. Resource Manager (RM): 資源管理器。它也嵌入在應(yīng)用中,負(fù)責(zé)管理分支事務(wù)(即本地事務(wù))相關(guān)的資源,向TC注冊(cè)分支事務(wù)、報(bào)告分支事務(wù)狀態(tài),并驅(qū)動(dòng)分支事務(wù)的提交和回滾。

一個(gè)典型的工作流程是:TM向TC申請(qǐng)開(kāi)啟一個(gè)全局事務(wù),生成全局唯一的XID。XID在微服務(wù)調(diào)用鏈中傳播。RM在執(zhí)行業(yè)務(wù)SQL時(shí),會(huì)向TC注冊(cè)分支事務(wù),并將數(shù)據(jù)的前后鏡像(undo log)保存起來(lái)。TM根據(jù)業(yè)務(wù)結(jié)果向TC發(fā)起全局提交或回滾決議,TC驅(qū)動(dòng)所有相關(guān)的RM完成最終的數(shù)據(jù)提交或回滾(利用undo log進(jìn)行補(bǔ)償)。

三、Seata 支持的分布式事務(wù)模式詳解

Seata提供了四種主要的分布式事務(wù)解決方案,以適應(yīng)不同的業(yè)務(wù)場(chǎng)景。

1. AT 模式(默認(rèn)且最常用)

AT模式是Seata主推的無(wú)侵入解決方案。它基于兩階段提交(2PC)演進(jìn)而來(lái),但對(duì)應(yīng)用代碼幾乎零侵入。

  • 工作原理
  • 第一階段:執(zhí)行業(yè)務(wù)SQL,提交本地事務(wù),并生成行數(shù)據(jù)的前鏡像后鏡像作為回滾日志(undo log),存入本地?cái)?shù)據(jù)庫(kù)。然后向TC報(bào)告就緒狀態(tài)。
  • 第二階段
  • 提交:TC收到提交指令后,異步、快速地刪除各分支的undo log即可。
  • 回滾:TC收到回滾指令后,RM根據(jù)XID查找undo log,生成反向更新SQL(利用前鏡像)進(jìn)行數(shù)據(jù)還原,然后刪除undo log。
  • 優(yōu)點(diǎn):對(duì)代碼無(wú)侵入、性能好、使用簡(jiǎn)單。
  • 缺點(diǎn):需要支持本地ACID事務(wù)的關(guān)系型數(shù)據(jù)庫(kù),且全局鎖機(jī)制在高并發(fā)下可能影響性能。

2. TCC 模式

TCC是一種侵入性較強(qiáng)但更靈活的模式,適用于對(duì)一致性要求高、且有復(fù)雜業(yè)務(wù)補(bǔ)償邏輯的場(chǎng)景(如涉及非事務(wù)型資源)。

  • 工作原理:將業(yè)務(wù)邏輯拆分為三個(gè)操作:
  • Try:預(yù)留業(yè)務(wù)資源(如凍結(jié)賬戶金額、鎖定庫(kù)存)。
  • Confirm:確認(rèn)執(zhí)行業(yè)務(wù),使用Try階段預(yù)留的資源(如扣減凍結(jié)金額)。
  • Cancel:取消執(zhí)行,釋放Try階段預(yù)留的資源(如解凍金額)。
  • Seata的TCC框架負(fù)責(zé)管理TCC分支的注冊(cè)、報(bào)告,以及Confirm/Cancel的調(diào)用。
  • 優(yōu)點(diǎn):完全由業(yè)務(wù)控制,可以跨非事務(wù)型資源,鎖粒度小,性能潛力高。
  • 缺點(diǎn):代碼侵入性強(qiáng),需要為每個(gè)業(yè)務(wù)設(shè)計(jì)Try/Confirm/Cancel接口,開(kāi)發(fā)復(fù)雜度高。

3. Saga 模式

Saga模式適用于業(yè)務(wù)流程長(zhǎng)、需要跨多個(gè)服務(wù)、且后續(xù)服務(wù)可補(bǔ)償?shù)膱?chǎng)景。

  • 工作原理:將一個(gè)長(zhǎng)事務(wù)拆分為一系列本地事務(wù)。每個(gè)本地事務(wù)都有對(duì)應(yīng)的補(bǔ)償事務(wù)。Saga協(xié)調(diào)器按順序執(zhí)行所有本地事務(wù),如果其中任何一個(gè)失敗,則按相反順序執(zhí)行已成功事務(wù)的補(bǔ)償事務(wù),將系統(tǒng)狀態(tài)回滾到事務(wù)開(kāi)始之前。
  • Seata的Saga狀態(tài)機(jī)通過(guò)配置JSON文件來(lái)定義服務(wù)調(diào)用和補(bǔ)償調(diào)用的順序,實(shí)現(xiàn)服務(wù)編排。
  • 優(yōu)點(diǎn):適用于長(zhǎng)時(shí)間事務(wù),參與者異步執(zhí)行,無(wú)全局鎖,吞吐量高。
  • 缺點(diǎn):不保證隔離性(可能出現(xiàn)“臟寫”),需要業(yè)務(wù)方設(shè)計(jì)冪等的正向操作和補(bǔ)償操作。

4. XA 模式

XA模式是分布式事務(wù)的經(jīng)典規(guī)范,基于數(shù)據(jù)庫(kù)或資源本身提供的XA協(xié)議實(shí)現(xiàn)。

  • 工作原理:同樣是兩階段提交,但依賴數(shù)據(jù)庫(kù)的XA驅(qū)動(dòng)。第一階段,所有參與者(RM)執(zhí)行SQL但不提交,將狀態(tài)告知TC;第二階段,TC根據(jù)決議通知所有參與者提交或回滾。
  • Seata充當(dāng)了XA協(xié)議中事務(wù)管理器(TM)的角色,統(tǒng)一管理XA事務(wù)。
  • 優(yōu)點(diǎn):強(qiáng)一致,對(duì)業(yè)務(wù)代碼零侵入,得到主流數(shù)據(jù)庫(kù)的廣泛支持。
  • 缺點(diǎn):數(shù)據(jù)在第一階段后即被鎖定,直到第二階段完成才釋放,對(duì)資源鎖定時(shí)間長(zhǎng),性能較差。

四、與消息隊(duì)列的集成實(shí)現(xiàn)最終一致性

除了Seata提供的強(qiáng)一致性/柔性事務(wù)方案,在微服務(wù)中,消息隊(duì)列(如RocketMQ) 是另一種極為常見(jiàn)的實(shí)現(xiàn)最終一致性的模式,常與本地事務(wù)表結(jié)合使用。
其核心思想是:將分布式事務(wù)拆分為一系列本地事務(wù),并通過(guò)可靠消息進(jìn)行異步協(xié)調(diào)。例如:

  1. 服務(wù)A執(zhí)行本地事務(wù),向本地“事務(wù)消息表”插入一條記錄(狀態(tài)為“待發(fā)送”),并提交。
  2. 一個(gè)后臺(tái)進(jìn)程輪詢?cè)摫恚瑢ⅰ按l(fā)送”的消息投遞到消息隊(duì)列。
  3. 消息隊(duì)列確保消息成功投遞給服務(wù)B。
  4. 服務(wù)B消費(fèi)消息,執(zhí)行本地事務(wù)。若成功,則向消息隊(duì)列返回ACK;若失敗,消息會(huì)重投或進(jìn)入死信隊(duì)列人工處理。
  5. 服務(wù)A收到消費(fèi)成功的確認(rèn)后,更新本地消息狀態(tài)為“已發(fā)送”。

這種方式與Seata的Saga模式有相似之處,但更依賴于MQ的可靠性和業(yè)務(wù)的冪等設(shè)計(jì)。Seata可以與消息隊(duì)列結(jié)合,例如在Saga模式中,使用消息來(lái)驅(qū)動(dòng)服務(wù)間的調(diào)用。

五、在信息系統(tǒng)集成服務(wù)中的應(yīng)用考量

在企業(yè)級(jí)信息系統(tǒng)集成服務(wù)中,選擇合適的分布式事務(wù)方案是關(guān)鍵決策。

  • 金融、交易核心系統(tǒng):對(duì)一致性要求極高,可優(yōu)先考慮TCC模式(控制精準(zhǔn))或XA模式(強(qiáng)一致),但需評(píng)估性能損失。AT模式在多數(shù)交易場(chǎng)景下也是可靠選擇。
  • 電商、訂單履約等長(zhǎng)流程業(yè)務(wù):涉及庫(kù)存、訂單、物流等多個(gè)系統(tǒng),流程長(zhǎng),Saga模式或基于消息隊(duì)列的最終一致性模型更為合適,它們能提供更好的系統(tǒng)吞吐量和靈活性。
  • 遺留系統(tǒng)集成:對(duì)于無(wú)法改造的“黑盒”系統(tǒng),可能只能通過(guò)消息隊(duì)列實(shí)現(xiàn)外部集成,保證最終一致。
  • 混合模式:一個(gè)復(fù)雜的集成項(xiàng)目中,可以混合使用多種模式。例如,核心扣款用TCC,積分發(fā)放用消息隊(duì)列最終一致。Seata框架本身支持多種模式并存。

六、

Seata作為阿里貢獻(xiàn)的成熟分布式事務(wù)解決方案,通過(guò)AT、TCC、Saga、XA四種模式,覆蓋了從強(qiáng)一致到最終一致、從代碼無(wú)侵入到高度可控的各種業(yè)務(wù)場(chǎng)景。它降低了微服務(wù)下處理分布式事務(wù)的技術(shù)門檻。在實(shí)際的信息系統(tǒng)集成服務(wù)設(shè)計(jì)中,開(kāi)發(fā)者需要深刻理解各模式的原理、優(yōu)缺點(diǎn),并結(jié)合具體的業(yè)務(wù)特征(一致性要求、性能要求、系統(tǒng)改造難度)進(jìn)行技術(shù)選型,必要時(shí)可以組合多種模式,以構(gòu)建穩(wěn)定、高效、可擴(kuò)展的分布式系統(tǒng)。


如若轉(zhuǎn)載,請(qǐng)注明出處:http://www.ytkyyzm.cn/product/60.html

更新時(shí)間:2026-06-19 10:33:32

主站蜘蛛池模板: 五月花在线视频 | 亚洲第一页不卡 | 结衣波多野在线 | 高清三级黄色 | 欧美日韩妖精视频 | 国产一卡二 | 深夜导航在线入口 | 国产一区二区黄片 | 91视频在线播放 | 在线播放真实国产 | 手机看片91AV| 欧美伦理三区四区 | 午夜探花视频 | 成人无码成人视频 | 国产精品国产精品 | 日韩黄色大片网站 | 97福利在线 | 污91视频| 成人深夜电影 | 国产成人无码电影 | 亚洲天堂三级 | 免费综合激情 | 后入综合网 | 深夜少妇福利在线 | 如如影院伦理 | 91香蕉下载 | 国产主播第三页 | 爆乳福利导航 | 日本α片祼毛 | 一二区国产无码 | 免费黄址足交欧美 | 福利片导航| 欧美69潮喷| 天美免费mv观看 | 91老司机精品 | 亚州综合2008 | 国产激情一区二 | 手机看片久久 | 青青久在线观 | 精品不卡人妻 | 福利在线免费视频 |