国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

聊聊Seata分布式解決方案AT模式的實(shí)現(xiàn)原理

這篇具有很好參考價(jià)值的文章主要介紹了聊聊Seata分布式解決方案AT模式的實(shí)現(xiàn)原理。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

什么是Seata分布式事務(wù)解決方案

Seata是一款開源的分布式事務(wù)解決方案,致力于提供高性能和簡(jiǎn)單易用的分布式事務(wù)服務(wù)。為用戶提供了AT、TCC、SAGA和XA事務(wù)模式,為用戶打造一站式的分布式解決方案。

AT模式

AT模式目前來看是Seata框架獨(dú)有的一種模式,其它的分布式框架上并沒有此種模式的實(shí)現(xiàn)。其是由二階段提交演變來的,解決了二階段提交的同步阻塞等問題。
演變后的兩階段提交協(xié)議:

  • 一階段:業(yè)務(wù)數(shù)據(jù)和回滾日志記錄在同一個(gè)本地事務(wù)中提交,釋放本地鎖和連接資源。
  • 二階段:
    • 提交異步化,非??焖俚赝瓿?。
    • 回滾通過一階段的回滾日志進(jìn)行反向補(bǔ)償。

Seata框架中有三個(gè)概念要闡述下。

  • TC:事務(wù)協(xié)調(diào)器,它是獨(dú)立的組件,需要獨(dú)立部署運(yùn)行,Seata提供了這個(gè)獨(dú)立運(yùn)行的程序,它負(fù)責(zé)維護(hù)全局事務(wù)的運(yùn)行狀態(tài),接收TM指令發(fā)起全局事務(wù)的提交與回滾,負(fù)責(zé)與RM通信,協(xié)調(diào)各個(gè)分支事務(wù)的提交或回滾。
  • TM:事務(wù)管理器,TM需要嵌入應(yīng)用程序,它負(fù)責(zé)開啟一個(gè)全局事務(wù),并定義全局事務(wù)的范圍,它的目的是最終向TC發(fā)起全局提交或回滾指令。
  • RM:與TC通信,控制分支事務(wù),負(fù)責(zé)分支注冊(cè)、報(bào)告分支事務(wù)狀態(tài),并接收事務(wù)協(xié)調(diào)器TC的指令,命令分支事務(wù)完成本地事務(wù)的提交或回滾。

流程示意圖如下:

聊聊Seata分布式解決方案AT模式的實(shí)現(xiàn)原理

這個(gè)圖還是比較清晰地,建議是先好好的理解下全流程。

Seata AT模式的具體流程如下。
(1)訂單服務(wù)收到請(qǐng)求,訂單服務(wù)中的TM向TC申請(qǐng)開啟一個(gè)全局事務(wù)。(2)TC收到請(qǐng)求,創(chuàng)建一個(gè)全局事務(wù),并將全局事務(wù)ID(稱為XID)返回給訂單服務(wù)的TM。
(3)訂單服務(wù)的RM向TC注冊(cè)分支事務(wù)。
(4)訂單服務(wù)執(zhí)行本地分支事務(wù)的業(yè)務(wù)邏輯并提交,釋放鎖定的數(shù)據(jù)庫資源。
(5)訂單服務(wù)向TC上報(bào)本地分支事務(wù)的提交結(jié)果。
(6)訂單服務(wù)調(diào)用遠(yuǎn)程的積分服務(wù),此時(shí)將XID通過參數(shù)傳給積分服務(wù)。(7)積分服務(wù)向TC注冊(cè)分支事務(wù)。
(8)積分服務(wù)執(zhí)行本地分支事務(wù)的業(yè)務(wù)邏輯并提交,釋放鎖定的數(shù)據(jù)庫資源,并返回訂單服務(wù)。
(9)積分服務(wù)向TC上報(bào)本地分支事務(wù)的提交結(jié)果。
(10)訂單服務(wù)的TM向TC發(fā)起全局事務(wù)的提交或回滾。
(11)TC向XID管轄下的全部分支事務(wù)發(fā)出提交或回滾的指令。

實(shí)現(xiàn)原理

我個(gè)人覺得框架其實(shí)也是一種需求的兌現(xiàn),只是不像平常開發(fā)時(shí)那樣有產(chǎn)品經(jīng)理給你輸出需求文檔(應(yīng)該也會(huì)有,但是少),業(yè)務(wù)流程不是傳統(tǒng)的那種XXX業(yè)務(wù),框架的需求一般是偏向技術(shù)一些,我把它認(rèn)為是技術(shù)需求;而日常我們做的開發(fā)一般是業(yè)務(wù)需求的兌現(xiàn)。

上面的流程可以看作是需求,那么現(xiàn)在需求出來了,程序猿要怎么實(shí)現(xiàn)?

設(shè)計(jì)思路

TM的設(shè)計(jì)

流程的開始與結(jié)束是由TM決定的,這個(gè)TM就是訂單服務(wù)Controller入口進(jìn)去后的某個(gè)Service方法(當(dāng)然也可能不是,看你的代碼架構(gòu),我這里只按照我自己的平常的開發(fā)模式來。)在這個(gè)Service方法中,處理了訂單服務(wù)以及積分服務(wù)的業(yè)務(wù)。當(dāng)Service方法完成后,那么就是整個(gè)業(yè)務(wù)做完了,事務(wù)即完成。因此,要我來實(shí)現(xiàn),這個(gè)TM對(duì)應(yīng)的Service方法,我會(huì)選擇用一個(gè)注解包裹,通過動(dòng)態(tài)代理的方式,在這個(gè)方法的前后分別負(fù)責(zé)全局事務(wù)的開始與結(jié)束流程。

RM的設(shè)計(jì)

RM負(fù)責(zé)執(zhí)行具體的業(yè)務(wù),將數(shù)據(jù)入庫同時(shí)上報(bào)給TC。由于二階段回滾時(shí)需要根據(jù)回滾日志replay,那么就一定需要記錄業(yè)務(wù)數(shù)據(jù)執(zhí)行的日志。那怎么記錄?回想了下Mybatis中的數(shù)據(jù)源代理,這里也是一樣的思路。必須攔截或是代理原先的數(shù)據(jù)源,解析原執(zhí)行的sql,注入Seata的邏輯,增強(qiáng)其執(zhí)行邏輯。我們看下RM要做的事情,第一階段:

聊聊Seata分布式解決方案AT模式的實(shí)現(xiàn)原理

第二階段提交:

聊聊Seata分布式解決方案AT模式的實(shí)現(xiàn)原理

第二階段回滾:

聊聊Seata分布式解決方案AT模式的實(shí)現(xiàn)原理

在執(zhí)行sql的過程中,各個(gè)代理對(duì)象起到的作用如下

聊聊Seata分布式解決方案AT模式的實(shí)現(xiàn)原理

所以在RM端最關(guān)鍵的就是數(shù)據(jù)源代理以及遠(yuǎn)程通信。這兩塊尤其是前者,就是AT模式的技術(shù)實(shí)現(xiàn)。

TC的設(shè)計(jì)

TC端需要管理Seata全局事務(wù)會(huì)話信息,一般是由全局事務(wù)、分支事務(wù)、全局鎖構(gòu)成,對(duì)應(yīng)表globaltable、branchtable、lock_table。因此在安裝部署的時(shí)候(file模式除外)都會(huì)創(chuàng)建這三個(gè)表。從上面來看,目前我們還沒有實(shí)現(xiàn)隔離性,所謂的隔離性是指多個(gè)用戶并發(fā)訪問數(shù)據(jù)庫時(shí),數(shù)據(jù)庫為每個(gè)用戶開啟的事務(wù)不能被其他事務(wù)的操作所干擾,多個(gè)并發(fā)事務(wù)之間要相互隔離。這也是這里有一個(gè)全局鎖表的原因。每次本地事務(wù)提交前,都會(huì)向TC端申請(qǐng)注冊(cè)分支,同時(shí)還會(huì)申請(qǐng)全局鎖,RM端通過拿到的全局鎖保證了讀寫的隔離性,因此一旦當(dāng)前事務(wù)持有全局鎖,那么其他的事務(wù)不能提交。

寫隔離

兩個(gè)全局事務(wù) tx1 和 tx2,分別對(duì) a 表的 m 字段進(jìn)行更新操作,m 的初始值 1000。

  1. tx1 先開始,開啟本地事務(wù),拿到本地鎖,更新操作 m = 1000 - 100 = 900。本地事務(wù)提交前,先拿到該記錄的全局鎖 ,本地提交釋放本地鎖。
  2. tx2 后開始,開啟本地事務(wù),拿到本地鎖,更新操作 m = 900 - 100 = 800。本地事務(wù)提交前,嘗試拿該記錄的全局鎖,tx1 全局提交前,該記錄的全局鎖被 tx1 持有,tx2 需要重試等待全局鎖。
  3. tx1 二階段全局提交,釋放全局鎖。tx2 拿到全局鎖提交本地事務(wù)。

聊聊Seata分布式解決方案AT模式的實(shí)現(xiàn)原理

如果 tx1 的二階段全局回滾,則 tx1 需要重新獲取該數(shù)據(jù)的本地鎖,進(jìn)行反向補(bǔ)償?shù)母虏僮鳎瑢?shí)現(xiàn)分支的回滾。

此時(shí),如果 tx2 仍在等待該數(shù)據(jù)的全局鎖,同時(shí)持有本地鎖,則 tx1 的分支回滾會(huì)失敗。分支的回滾會(huì)一直重試,直到 tx2 的全局鎖等鎖超時(shí),放棄全局鎖并回滾本地事務(wù)釋放本地鎖,tx1 的分支回滾最終成功。

因?yàn)檎麄€(gè)過程全局鎖在 tx1 結(jié)束前一直是被 tx1 持有的,所以不會(huì)發(fā)生臟寫的問題。

聊聊Seata分布式解決方案AT模式的實(shí)現(xiàn)原理

讀隔離

聊聊Seata分布式解決方案AT模式的實(shí)現(xiàn)原理

seata at 模式默認(rèn)的隔離級(jí)別為讀未提交(因?yàn)橐呀?jīng)提交的sql有可能會(huì)回滾)。如果要實(shí)現(xiàn)讀已提交,select語句需要更改為 SELECT FOR UPDATE 語句。

SELECT FOR UPDATE 語句的執(zhí)行會(huì)申請(qǐng)全局鎖,如果全局鎖被其他事務(wù)持有,則釋放本地鎖(回滾 SELECT FOR UPDATE 語句的本地執(zhí)行)并重試。這個(gè)過程中,查詢是被 block 住的,直到 全局鎖 拿到,即讀取的相關(guān)數(shù)據(jù)是已提交的,才返回。

總結(jié)

Seata AT可以給你帶來一種“無侵入”式的編程體驗(yàn),你不需要改動(dòng)任何業(yè)務(wù)代碼,只需要一個(gè)注解和少量的配置信息,就可以實(shí)現(xiàn)分布式事務(wù)。

總結(jié)來看,AT模式主要是是基于 DataSource 代理實(shí)現(xiàn)的,通過代理 DataSource、Connection、PreparedStatement,攔截 SQL 執(zhí)行,增強(qiáng)其執(zhí)行邏輯,由代理側(cè)加入額外的能力以提供分布式事務(wù)服務(wù)類似自動(dòng)擋駕駛模式,分布式事務(wù)這個(gè)強(qiáng)大且復(fù)雜的服務(wù)能力由Seata框架托管,對(duì)業(yè)務(wù)實(shí)現(xiàn)無侵入式,用戶仍然只專注于業(yè)務(wù) SQL。文章來源地址http://www.zghlxwxcb.cn/news/detail-451387.html

到了這里,關(guān)于聊聊Seata分布式解決方案AT模式的實(shí)現(xiàn)原理的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • springcloud3 分布式事務(wù)解決方案seata之AT模式5

    springcloud3 分布式事務(wù)解決方案seata之AT模式5

    1.XA模式一階段不提交事務(wù),鎖定資源;AT模式一階段直接提交,不鎖定資源; 2.XA模式依賴數(shù)據(jù)庫機(jī)制實(shí)現(xiàn)回滾;AT模式利用數(shù)據(jù)庫快照實(shí)現(xiàn)數(shù)據(jù)回滾 3.XA模式強(qiáng)一致;AT模式最終一致。 1.2 AT模式原理 一階段: 1.TM發(fā)起并注冊(cè)全局事務(wù)到TC; 2.TM調(diào)用分支事務(wù); 3.RM進(jìn)行注冊(cè)分支

    2024年02月07日
    瀏覽(31)
  • SpringCloud Alibaba - Seata 四種分布式事務(wù)解決方案(XA、AT)+ 實(shí)踐部署(上)

    SpringCloud Alibaba - Seata 四種分布式事務(wù)解決方案(XA、AT)+ 實(shí)踐部署(上)

    目錄 一、Seata 分布式事務(wù)解決方案 1.1、XA 模式 1.1.1、XA模式理論 第一階段: 第二階段: 1.1.2、Seata 框架中的 XA 模式 第一階段: 第二階段: 1.1.3、XA 模式的優(yōu)缺點(diǎn) 1.2.4、實(shí)現(xiàn)Seata 的?XA 模式 a)修改 application 文件(每一個(gè)參與事務(wù)的微服務(wù)) b)給發(fā)起全局事務(wù)中的入口方法

    2024年04月14日
    瀏覽(19)
  • 分布式鎖解決方案_Zookeeper實(shí)現(xiàn)分布式鎖

    提示:這里可以添加系列文章的所有文章的目錄,目錄需要自己手動(dòng)添加 分布式鎖解決方案_Zookeeper實(shí)現(xiàn)分布式鎖 提示:寫完文章后,目錄可以自動(dòng)生成,如何生成可參考右邊的幫助文檔 提示:這里可以添加本文要記錄的大概內(nèi)容: Zookeeper 是一個(gè)開源的分布式協(xié)調(diào)服務(wù),它

    2024年02月03日
    瀏覽(16)
  • 分布式鎖解決方案

    分布式鎖解決方案

    由于分布式或者集群部署項(xiàng)目時(shí),在某些業(yè)務(wù)場(chǎng)景下需保證資源的原子性、一致性和互斥性。 如果把房子比作資源,通俗的來講,我無論在那個(gè)城市生活,這個(gè)房子我先租的,再?zèng)]有退房的前提下,別人都不能用 目前最流行的解決方案 redisson 分布式鎖 zookeeper 分布式鎖 mav

    2024年02月12日
    瀏覽(19)
  • 分布式websocket解決方案

    分布式websocket解決方案

    websocket基礎(chǔ)請(qǐng)自行學(xué)習(xí),本文章是解決在分布式環(huán)境下websocket通訊問題。 在單體環(huán)境下,所有web客戶端都是連接到某一個(gè)微服務(wù)上,這樣消息都是到達(dá)統(tǒng)一服務(wù)端,并且也是由一個(gè)服務(wù)端進(jìn)行響應(yīng),所以不會(huì)出現(xiàn)問題。 但是在分布式環(huán)境下,我們很容易發(fā)現(xiàn),客戶端連接的

    2024年02月13日
    瀏覽(25)
  • 【SpirngCloud】分布式事務(wù)解決方案

    【SpirngCloud】分布式事務(wù)解決方案

    1.1 CAP 理論 1998年,加州大學(xué)的計(jì)算機(jī)科學(xué)家 Eric Brewer 提出,分布式系統(tǒng)有三個(gè)指標(biāo): Consistency(一致性):用戶訪問分布式系統(tǒng)中的任意節(jié)點(diǎn),得到的數(shù)據(jù)必須一致 Availability(可用性):用戶訪問集群中的任意健康節(jié)點(diǎn),必須能得到響應(yīng),而不是超時(shí)或拒絕 Partition tolerance(分區(qū)容

    2024年02月15日
    瀏覽(23)
  • Redis 分布式鎖解決方案

    Redis 分布式鎖解決方案

    我們?nèi)粘T陔娚叹W(wǎng)站購物時(shí)經(jīng)常會(huì)遇到一些高并發(fā)的場(chǎng)景,例如電商 App 上經(jīng)常出現(xiàn)的秒殺活動(dòng)、限量優(yōu)惠券搶購,還有我們?nèi)ツ膬壕W(wǎng)的火車票搶票系統(tǒng)等,這些場(chǎng)景有一個(gè)共同特點(diǎn)就是訪問量激增,雖然在系統(tǒng)設(shè)計(jì)時(shí)會(huì)通過限流、異步、排隊(duì)等方式優(yōu)化,但整體的并發(fā)還是

    2023年04月22日
    瀏覽(27)
  • 分布式ID解決方案對(duì)比

    分布式ID解決方案對(duì)比

    在復(fù)雜的分布式系統(tǒng)中,往往需要對(duì)大量的數(shù)據(jù)進(jìn)行唯一標(biāo)識(shí),比如在對(duì)一個(gè)訂單表進(jìn)行了分庫分表操作,這時(shí)候數(shù)據(jù)庫的自增ID顯然不能作為某個(gè)訂單的唯一標(biāo)識(shí)。除此之外還有其他分布式場(chǎng)景對(duì)分布式ID的一些要求: 趨勢(shì)遞增: ?由于多數(shù)RDBMS使用B-tree的數(shù)據(jù)結(jié)構(gòu)來存儲(chǔ)索

    2024年02月04日
    瀏覽(21)
  • ChatGPT:分布式事務(wù)解決方案

    隨著互聯(lián)網(wǎng)的發(fā)展和技術(shù)的不斷更新,越來越多的應(yīng)用程序開始采用分布式架構(gòu)。然而,由于數(shù)據(jù)和處理邏輯的分散性和異構(gòu)性,分布式環(huán)境下的事務(wù)處理面臨著許多挑戰(zhàn)。這時(shí)候就需要采用分布式事務(wù)來確保系統(tǒng)的一致性和可靠性。 分布式事務(wù)是指在分布式系統(tǒng)中,涉及多

    2023年04月12日
    瀏覽(23)
  • 無限容量分布式文件存儲(chǔ)解決方案

    無限容量分布式文件存儲(chǔ)解決方案

    常見分布式文件系統(tǒng)比較 常見的分布式文件系統(tǒng)有GFS、HDFS 、Ceph 、GridFS 、TFS、FastDFS等。各自適用于不同的領(lǐng)域。 類 Google FS 都支持文件冗余備份,例如 Google FS、TFS 的備份數(shù)是 3。一個(gè)文件存儲(chǔ)到哪幾個(gè)存儲(chǔ)結(jié)點(diǎn),通常采用動(dòng)態(tài)分配的方式。采用這種方式,一個(gè)文件存儲(chǔ)到

    2024年02月11日
    瀏覽(15)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包