【深入淺出Seata原理及實(shí)戰(zhàn)】「入門基礎(chǔ)專題」帶你透析認(rèn)識(shí)Seata分布式事務(wù)服務(wù)的原理和流程(1)

分布式事務(wù)的背景

隨著業(yè)務(wù)的不斷發(fā)展,單體架構(gòu)已經(jīng)無(wú)法滿足我們的需求蹂楣,分布式微服務(wù)架構(gòu)逐漸成為大型互聯(lián)網(wǎng)平臺(tái)的首選,但所有使用分布式微服務(wù)架構(gòu)的應(yīng)用都必須面臨一個(gè)十分棘手的問題浪藻,那就是“分布式事務(wù)”問題捐迫。

在分布式微服務(wù)架構(gòu)中,幾乎所有業(yè)務(wù)操作都需要多個(gè)服務(wù)協(xié)作才能完成爱葵。對(duì)于其中的某個(gè)服務(wù)而言施戴,它的數(shù)據(jù)一致性可以交由其自身數(shù)據(jù)庫(kù)事務(wù)來保證反浓,但從整個(gè)分布式微服務(wù)架構(gòu)來看,其全局?jǐn)?shù)據(jù)的一致性卻是無(wú)法保證的赞哗。

Seata是什么雷则?

Seata 是一個(gè)分布式事務(wù)處理框架,也是一款開源的分布式事務(wù)解決方案肪笋,由阿里巴巴和螞蟻金服共同開源的分布式事務(wù)解決方案月劈,能夠在微服務(wù)架構(gòu)下提供高性能且簡(jiǎn)單易用的分布式事務(wù)服務(wù),致力于提供高性能和簡(jiǎn)單易用的分布式事務(wù)服務(wù)藤乙。

Seata相關(guān)資料

image
image

Seata的發(fā)展歷程

阿里巴巴作為國(guó)內(nèi)最早一批進(jìn)行應(yīng)用分布式(微服務(wù)化)改造的企業(yè)猜揪,很早就遇到微服務(wù)架構(gòu)下的分布式事務(wù)問題,阿里巴巴對(duì)于分布式事務(wù)問題先后發(fā)布了以下解決方案:

  • 2014 年坛梁,阿里中間件團(tuán)隊(duì)發(fā)布 TXC(Taobao Transaction Constructor)而姐,為集團(tuán)內(nèi)應(yīng)用提供分布式事務(wù)服務(wù)。

  • 2016 年划咐,TXC 在經(jīng)過產(chǎn)品化改造后拴念,以 GTS(Global Transaction Service) 的身份登陸阿里云,成為當(dāng)時(shí)業(yè)界唯一一款云上分布式事務(wù)產(chǎn)品褐缠。在阿云里的公有云政鼠、專有云解決方案中,開始服務(wù)于眾多外部客戶队魏。

  • 2019 年起公般,基于 TXC 和 GTS 的技術(shù)積累,阿里中間件團(tuán)隊(duì)發(fā)起了開源項(xiàng)目 Fescar(Fast & EaSy Commit And Rollback, FESCAR)器躏,和社區(qū)一起建設(shè)這個(gè)分布式事務(wù)解決方案俐载。

  • 2019 年 fescar 被重命名為了seata(simple extensiable autonomous transaction architecture)。

TXC登失、GTS遏佣、Fescar以及seata一脈相承,為解決微服務(wù)架構(gòu)下的分布式事務(wù)問題交出了一份與眾不同的答卷揽浙。

事務(wù)相關(guān)概念

  • 事務(wù):由一組操作構(gòu)成的可靠状婶、獨(dú)立的工作單元,事務(wù)具備 ACID 的特性馅巷,即原子性膛虫、一致性、隔離性和持久性钓猬。

分布式事務(wù)的相關(guān)概念

分布式事務(wù)的基本原則可以理解成一個(gè)包含了若干個(gè)分支事務(wù)的全局事務(wù)稍刀。

image

分布式事務(wù)主要涉及以下概念

  • 本地事務(wù):本地事務(wù)由本地資源管理器(通常指數(shù)據(jù)庫(kù)管理系統(tǒng) DBMS,例如 MySQL、Oracle 等)管理账月,嚴(yán)格地支持 ACID 特性综膀,高效可靠。
  • 全局事務(wù):全局事務(wù)指的是一次性操作多個(gè)資源管理器完成的事務(wù)局齿,由一組分支事務(wù)組成剧劝。
  • 分支事務(wù):在分布式事務(wù)中,就是一個(gè)受全局事務(wù)管轄和協(xié)調(diào)的本地事務(wù)抓歼。
image

注意:本地事務(wù)不具備分布式事務(wù)的處理能力讥此,隔離的最小單位受限于資源管理器,即本地事務(wù)只能對(duì)自己數(shù)據(jù)庫(kù)的操作進(jìn)行控制谣妻,對(duì)于其他數(shù)據(jù)庫(kù)的操作則無(wú)能為力萄喳。

全局事務(wù)

全局事務(wù)的職責(zé)是協(xié)調(diào)其管轄的各個(gè)分支事務(wù)達(dá)成一致,要么一起成功提交蹋半,要么一起失敗回滾取胎。此外,通常分支事務(wù)本身就是一個(gè)滿足 ACID特性的本地事務(wù)湃窍。

Seata的運(yùn)作原理

Seata對(duì)分布式事務(wù)的協(xié)調(diào)和控制,主要是通過XID和3個(gè)核心組件實(shí)現(xiàn)的匪傍。

XID

XID是全局事務(wù)唯一標(biāo)識(shí)您市,可以在服務(wù)的調(diào)用鏈路中傳遞,綁定到服務(wù)的事務(wù)上下文中役衡。

核心組件

Seata定義了3個(gè)核心組件

  • TC(Transaction Coordinator):事務(wù)協(xié)調(diào)器茵休,它是事務(wù)的協(xié)調(diào)者(這里指的是 Seata服務(wù)器),主要負(fù)責(zé)維護(hù)全局事務(wù)和分支事務(wù)的狀態(tài)手蝎,驅(qū)動(dòng)全局事務(wù)提交或回滾榕莺。

  • TM(Transaction Manager):事務(wù)管理器,它是事務(wù)的發(fā)起者棵介,負(fù)責(zé)定義全局事務(wù)的范圍钉鸯,并根據(jù)TC維護(hù)的全局事務(wù)和分支事務(wù)狀態(tài),做出開始事務(wù)邮辽、提交事務(wù)唠雕、回滾事務(wù)的決議

    image
  • RM(Resource Manager):資源管理器吨述,它是資源的管理者(這里可以將其理解為各服務(wù)使用的數(shù)據(jù)庫(kù))岩睁。它負(fù)責(zé)管理分支事務(wù)上的資源,向TC注冊(cè)分支事務(wù)揣云,匯報(bào)分支事務(wù)狀態(tài)捕儒,驅(qū)動(dòng)分支事務(wù)的提交或回滾。

    image

以上三個(gè)組件相互協(xié)作邓夕,TC 以 Seata 服務(wù)器(Server)形式獨(dú)立部署刘莹,TM 和 RM 則是以 Seata Client的形式集成在微服務(wù)中運(yùn)行阎毅。

Seata的運(yùn)行流程

Seata 的整體工作流程如下

image
  1. TM向TC申請(qǐng)開啟一個(gè)全局事務(wù),全局事務(wù)創(chuàng)建成功后栋猖,TC會(huì)針對(duì)這個(gè)全局事務(wù)生成一個(gè)全局唯一的XID净薛;
  2. XID 通過服務(wù)的調(diào)用鏈傳遞到其他服務(wù);
  3. RM向TC注冊(cè)一個(gè)分支事務(wù),并將其納入XID對(duì)應(yīng)全局事務(wù)的管轄蒲拉;
  4. TM根據(jù)TC收集的各個(gè)分支事務(wù)的執(zhí)行結(jié)果肃拜,向TC發(fā)起全局事務(wù)提交或回滾決議;
  5. TC調(diào)度XID下管轄的所有分支事務(wù)完成提交或回滾操作雌团。

Seata的事務(wù)模式

目前Seata為用戶提供了 AT燃领、TCC、SAGA 和 XA 事務(wù)模式锦援,為用戶打造一站式的分布式解決方案猛蔽,可以快速有效地對(duì)分布式事務(wù)進(jìn)行控制。

在這四種事務(wù)模式中使用最多灵寺,最方便的就是 AT 模式曼库。與其他事務(wù)模式相比,AT 模式可以應(yīng)對(duì)大多數(shù)的業(yè)務(wù)場(chǎng)景略板,且基本可以做到無(wú)業(yè)務(wù)入侵毁枯,開發(fā)人員能夠有更多的精力關(guān)注于業(yè)務(wù)邏輯開發(fā)。

Seata最后結(jié)論

接下來會(huì)針對(duì)于Seata的每種事務(wù)模式進(jìn)行實(shí)戰(zhàn)指南叮称。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末种玛,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子瓤檐,更是在濱河造成了極大的恐慌赂韵,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,744評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件挠蛉,死亡現(xiàn)場(chǎng)離奇詭異祭示,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)碌秸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,505評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門绍移,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人讥电,你說我怎么就攤上這事蹂窖。” “怎么了恩敌?”我有些...
    開封第一講書人閱讀 163,105評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵瞬测,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我,道長(zhǎng)月趟,這世上最難降的妖魔是什么灯蝴? 我笑而不...
    開封第一講書人閱讀 58,242評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮孝宗,結(jié)果婚禮上穷躁,老公的妹妹穿的比我還像新娘。我一直安慰自己因妇,他們只是感情好问潭,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,269評(píng)論 6 389
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著婚被,像睡著了一般狡忙。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上址芯,一...
    開封第一講書人閱讀 51,215評(píng)論 1 299
  • 那天灾茁,我揣著相機(jī)與錄音,去河邊找鬼谷炸。 笑死北专,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的旬陡。 我是一名探鬼主播逗余,決...
    沈念sama閱讀 40,096評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼季惩!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起腻格,我...
    開封第一講書人閱讀 38,939評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤画拾,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后菜职,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體青抛,經(jīng)...
    沈念sama閱讀 45,354評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,573評(píng)論 2 333
  • 正文 我和宋清朗相戀三年酬核,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蜜另。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,745評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡嫡意,死狀恐怖举瑰,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蔬螟,我是刑警寧澤此迅,帶...
    沈念sama閱讀 35,448評(píng)論 5 344
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響耸序,放射性物質(zhì)發(fā)生泄漏忍些。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,048評(píng)論 3 327
  • 文/蒙蒙 一坎怪、第九天 我趴在偏房一處隱蔽的房頂上張望罢坝。 院中可真熱鬧,春花似錦搅窿、人聲如沸嘁酿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,683評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)痹仙。三九已至,卻和暖如春殉了,著一層夾襖步出監(jiān)牢的瞬間开仰,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,838評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工薪铜, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留众弓,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,776評(píng)論 2 369
  • 正文 我出身青樓隔箍,卻偏偏與公主長(zhǎng)得像谓娃,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子蜒滩,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,652評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容