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

Seata分布式事務(wù)AT、TCC、SAGA、XA模式

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

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

AT模式

??實(shí)現(xiàn)原理
阿里SEATA獨(dú)有模式,通過(guò)生成反向SQL實(shí)現(xiàn)數(shù)據(jù)回滾,需要在數(shù)據(jù)庫(kù)額外附加UNDO_LOG表,UNDO_LOG表中保存的是自動(dòng)生成的回滾SQL。

舉個(gè)??

insert into 訂單 values(1001,...)
update 倉(cāng)儲(chǔ) set num = 300 where gid =100;

自動(dòng)生成UNDO_LOG回滾日志

DELETE FROM 訂單 where id =1001
update 倉(cāng)儲(chǔ) set num=210 where gid = 100

特點(diǎn)

性能:高
模式:AP,存在數(shù)據(jù)不一致的中間狀態(tài)
難易程度:簡(jiǎn)單,靠SEATA自己解析反向SQL并聞滾

使用要求:
所有服務(wù)與數(shù)據(jù)庫(kù)必須要自己擁有管理權(quán),因?yàn)橐獎(jiǎng)?chuàng)建UNDO LOG表
最好都是MySQL,聽說(shuō)也支持PSQL,不過(guò)沒(méi)試驗(yàn)過(guò)

應(yīng)用場(chǎng)景:
高并發(fā)互聯(lián)網(wǎng)應(yīng)用,允許數(shù)據(jù)出現(xiàn)短時(shí)不一致,可通過(guò)對(duì)賬程序或補(bǔ)錄來(lái)保證最終一致性。

TCC模式

??實(shí)現(xiàn)原理
TCC是Try-嘗試、Confirm-確認(rèn)、Cancel-取消Try嘗試階段,對(duì)資源進(jìn)行鎖定。
Confirm確認(rèn)階段,對(duì)資源進(jìn)行確認(rèn),完成操作Cancel取消階段,對(duì)資源進(jìn)行還原,取消操作。

在代碼與數(shù)據(jù)表中擴(kuò)展字段,實(shí)現(xiàn)對(duì)特定數(shù)據(jù)資源的鎖定。

Try階段:預(yù)留所需的資源,預(yù)增金額,凍結(jié)庫(kù)存
Confirm確認(rèn)階段:把預(yù)留的資源放入真實(shí)資源字段,清空預(yù)留資源
Seata分布式事務(wù)AT、TCC、SAGA、XA模式

cancel階段:對(duì)鎖定的資源釋放
Seata分布式事務(wù)AT、TCC、SAGA、XA模式

特點(diǎn)

性能:好
模式:AP,存在數(shù)據(jù)不一致的中間狀態(tài)
難易程度:復(fù)雜,SEATA TC只負(fù)責(zé)全局事務(wù)的提交與回滾指令,具體的回滾處理全靠程序員自己實(shí)現(xiàn)(每個(gè)業(yè)務(wù)流程車都需手動(dòng)寫代碼TRY,COMMIT,CANCEL三個(gè)對(duì)應(yīng)的方法)

使用要求:
所有服務(wù)與數(shù)據(jù)庫(kù)必須要自己擁有管理權(quán)
支持異構(gòu)數(shù)據(jù)庫(kù),可以使用不同選型實(shí)現(xiàn)

應(yīng)用場(chǎng)景:
高并發(fā)互聯(lián)網(wǎng)應(yīng)用,允許數(shù)據(jù)出現(xiàn)短時(shí)不一致,可通過(guò)對(duì)賬程序或補(bǔ)錄來(lái)保證最終一致性。

SAGA模式

??實(shí)現(xiàn)原理
Saga模式是SEATA提供的長(zhǎng)事務(wù)解決方案,在Saga模式中,業(yè)務(wù)流程中每個(gè)參與者都提交本地事務(wù),當(dāng)出現(xiàn)某一個(gè)參與者失敗則補(bǔ)償前面已經(jīng)成功的參與者,一階段正向服務(wù)和二階段補(bǔ)償服務(wù)都由業(yè)務(wù)具體實(shí)現(xiàn)者開發(fā)實(shí)現(xiàn)。

Saga相關(guān)概念

1987年普林斯頓大學(xué)的Hector Garcia-Molina和Kenneth Salem發(fā)表了一篇Paper Sagas,講述的是如何處理long lived transaction(長(zhǎng)活事務(wù))。Saga是一個(gè)長(zhǎng)活事務(wù)可被分解成可以交錯(cuò)運(yùn)行的子事務(wù)集合。其中每個(gè)子事務(wù)都是一個(gè)保持?jǐn)?shù)據(jù)庫(kù)一致性的真實(shí)事務(wù)。 論文地址:sagas

Saga的組成
每個(gè)Saga由一系列sub-transaction Ti 組成

每個(gè)Ti 都有對(duì)應(yīng)的補(bǔ)償動(dòng)作Ci,補(bǔ)償動(dòng)作用于撤銷Ti造成的結(jié)果
可以看到,和TCC相比,Saga沒(méi)有“預(yù)留”動(dòng)作,它的Ti就是直接提交到庫(kù)。

Saga的執(zhí)行順序有兩種:
T1, T2, T3, …, Tn
T1, T2, …, Tj, Cj,…, C2, C1,其中0 < j < n

Saga定義了兩種恢復(fù)策略

  • backward recovery,向后恢復(fù),補(bǔ)償所有已完成的事務(wù),如果任一子事務(wù)失敗。即上面提到的第二種執(zhí)行順序,其中j是發(fā)生錯(cuò)誤的sub-transaction,這種做法的效果是撤銷掉之前所有成功的sub-transation,使得整個(gè)Saga的執(zhí)行結(jié)果撤銷。

  • forward recovery,向前恢復(fù),重試失敗的事務(wù),假設(shè)每個(gè)子事務(wù)最終都會(huì)成功。適用于必須要成功的場(chǎng)景,執(zhí)行順序是類似于這樣的:T1, T2, …, Tj(失敗), Tj(重試),…, Tn,其中j是發(fā)生錯(cuò)誤的sub-transaction。該情況下不需要Ci。

顯然,向前恢復(fù)沒(méi)有必要提供補(bǔ)償事務(wù),如果你的業(yè)務(wù)中,子事務(wù)(最終)總會(huì)成功,或補(bǔ)償事務(wù)難以定義或不可能,向前恢復(fù)更符合你的需求。

理論上補(bǔ)償事務(wù)永不失敗,然而,在分布式世界中,服務(wù)器可能會(huì)宕機(jī),網(wǎng)絡(luò)可能會(huì)失敗,甚至數(shù)據(jù)中心也可能會(huì)停電。在這種情況下我們能做些什么? 最后的手段是提供回退措施,比如人工干預(yù)。
Seata分布式事務(wù)AT、TCC、SAGA、XA模式
這里比如支付寶只提供了轉(zhuǎn)賬接口和退款接口,而你具體負(fù)責(zé)商城訂單業(yè)務(wù),正向流程下單-支付成功-扣減庫(kù)存-訂單狀態(tài)變更為待發(fā)貨。

如果扣減庫(kù)存失敗,比如庫(kù)存為0扣減失敗了,這時(shí)候你需要自行調(diào)用支付寶的退款接口,模擬事務(wù)回滾的業(yè)務(wù)流程,支付寶是不會(huì)幫你實(shí)現(xiàn)事務(wù)回滾的。

特點(diǎn)

性能:不一定,取決于三方服務(wù),不推薦此種分布式事務(wù)
模式:AP,存在數(shù)據(jù)不一致的中間狀態(tài)
難易程度:1.復(fù)雜,提交與回滾流程全靠程序員編排,代碼邏輯難以理解,后期更是難以維護(hù)和升級(jí)。2.可能會(huì)出現(xiàn)循環(huán)依賴的死循環(huán)。3.兩種恢復(fù)策略需要保證原子性

使用要求:
在當(dāng)前架構(gòu)引入狀態(tài)機(jī)機(jī)制,類似于工作流
引入原子性,確保forward和backward時(shí)重復(fù)執(zhí)行
無(wú)法保證隔離性

應(yīng)用場(chǎng)景:
基本不推薦此種分布式事務(wù)。需要與第三方交互時(shí)才會(huì)考慮,例如:調(diào)用支付寶支付接口->出庫(kù)失敗->調(diào)用支付寶退款接口

和TCC對(duì)比

Saga相比TCC的缺點(diǎn)是缺少預(yù)留動(dòng)作,導(dǎo)致補(bǔ)償動(dòng)作的實(shí)現(xiàn)比較麻煩:Ti就是commit,比如一個(gè)業(yè)務(wù)是發(fā)送郵件,在TCC模式下,先保存草稿(Try)再發(fā)送(Confirm),撤銷的話直接刪除草稿(Cancel)就行了。而Saga則就直接發(fā)送郵件了(Ti),如果要撤銷則得再發(fā)送一份郵件說(shuō)明撤銷(Ci),實(shí)現(xiàn)起來(lái)有一些麻煩。

XA模式

??實(shí)現(xiàn)原理
基于數(shù)據(jù)庫(kù)的XA協(xié)議來(lái)實(shí)現(xiàn)2PC又稱為XA方案,數(shù)據(jù)庫(kù)必須實(shí)現(xiàn)并支持XA協(xié)議
Seata分布式事務(wù)AT、TCC、SAGA、XA模式

特點(diǎn)

性能:低
模式:CP,強(qiáng)一致性
難易程度:簡(jiǎn)單,基于數(shù)據(jù)庫(kù)自帶特性實(shí)現(xiàn),無(wú)需改表

使用要求:
使用支持XA方案的關(guān)系型數(shù)據(jù)庫(kù)(主流都支持)

應(yīng)用場(chǎng)景:
金融行業(yè),并發(fā)量不大,但數(shù)據(jù)很重要的項(xiàng)目

總結(jié):

可以看出,所有分布式方式都是兩階段模式,成功提交,失敗回滾。而根據(jù)實(shí)現(xiàn)難度,TCC和SAGA都需要手動(dòng)實(shí)現(xiàn)業(yè)務(wù)回滾代碼,復(fù)雜度要高一些。其他都可以有數(shù)據(jù)庫(kù)或者第三方事務(wù)管理器實(shí)現(xiàn)回滾業(yè)務(wù)流程,而你只需要專注業(yè)務(wù)流程本身。

AT模式需要所有參與方都有數(shù)據(jù)庫(kù)權(quán)限,這點(diǎn)如果項(xiàng)目參與方都是一起的不涉及第三方或許可以實(shí)現(xiàn)。但如果你調(diào)用的是第三方服務(wù),顯然不可能支持,第三方更不可能給你提供數(shù)據(jù)庫(kù)訪問(wèn)權(quán)限,比如支付服務(wù),任何第三方支付都不可能提供數(shù)據(jù)庫(kù)權(quán)限給你。

因此要綜合考慮自己的使用情況,再?zèng)Q定使用哪種模式。
但是現(xiàn)實(shí)中,分布式事務(wù)還是要根據(jù)情況去使用,絕大多數(shù)項(xiàng)目能不是使用分布式事務(wù)就不會(huì)使用。只要確保最終事務(wù)一致性即可。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-467684.html

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

本文來(lái)自互聯(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)文章

  • 分布式軟件架構(gòu)——分布式事務(wù)TCC和SAGA

    分布式軟件架構(gòu)——分布式事務(wù)TCC和SAGA

    TCC 是另一種常見的分布式事務(wù)機(jī)制,它是“ Try-Confirm-Cancel ”三個(gè)單詞的縮寫,是由數(shù)據(jù)庫(kù)專家 Pat Helland 在 2007 年撰寫的論文《Life beyond Distributed Transactions: An Apostate’s Opinion》中提出。 前面介紹的可靠消息隊(duì)列雖然能保證最終的結(jié)果是相對(duì)可靠的,過(guò)程也足夠簡(jiǎn)單(相對(duì)于

    2024年02月12日
    瀏覽(23)
  • 3分鐘帶你了解下分布式事務(wù)TCC與SAGA

    文章首發(fā)地址 TCC(Try-Confirm-Cancel)是一種分布式事務(wù)方案,它通過(guò)將事務(wù)拆分成“嘗試(Try)”、“確認(rèn)(Confirm)”和“取消(Cancel)”三個(gè)階段來(lái)實(shí)現(xiàn)。 在TCC中,每個(gè)參與者都需要實(shí)現(xiàn)這三個(gè)階段來(lái)協(xié)調(diào)分布式事務(wù)的執(zhí)行。具體流程如下: 嘗試(Try)階段:在這一階段中

    2024年02月14日
    瀏覽(22)
  • 分布式事務(wù)Seata實(shí)戰(zhàn)-AT模式(注冊(cè)中心為Eureka)

    分布式事務(wù)Seata實(shí)戰(zhàn)-AT模式(注冊(cè)中心為Eureka)

    大致記錄Seata的AT模式下創(chuàng)建項(xiàng)目過(guò)程中需要注意的點(diǎn)和可能遇到的問(wèn)題。 本項(xiàng)目是以官網(wǎng)的給的示例(即下圖)進(jìn)行創(chuàng)建的,以Eureka為注冊(cè)中心。 官網(wǎng):Seata AT 模式 | Apache Seata? 官方代碼示例:? ?快速啟動(dòng) | Apache Seata? 此文章涉及的項(xiàng)目代碼鏈接:seata-at: 分布式事務(wù)解

    2024年01月19日
    瀏覽(22)
  • springcloud3 分布式事務(wù)解決方案seata之AT模式5

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

    1.XA模式一階段不提交事務(wù),鎖定資源;AT模式一階段直接提交,不鎖定資源; 2.XA模式依賴數(shù)據(jù)庫(kù)機(jī)制實(shí)現(xiàn)回滾;AT模式利用數(shù)據(jù)庫(kù)快照實(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日
    瀏覽(32)
  • 聊聊Seata分布式解決方案AT模式的實(shí)現(xiàn)原理

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

    Seata是一款開源的分布式事務(wù)解決方案,致力于提供高性能和簡(jiǎn)單易用的分布式事務(wù)服務(wù)。為用戶提供了AT、TCC、SAGA和XA事務(wù)模式,為用戶打造一站式的分布式解決方案。 AT模式目前來(lái)看是Seata框架獨(dú)有的一種模式,其它的分布式框架上并沒(méi)有此種模式的實(shí)現(xiàn)。其是由二階段提

    2024年02月05日
    瀏覽(28)
  • 微服務(wù)13-Seata的四種分布式事務(wù)模式

    微服務(wù)13-Seata的四種分布式事務(wù)模式

    XA模式分為兩種情況 : 提交成功: 提交失?。?具有強(qiáng)一致性seata相當(dāng)于是在RM上做了一層封裝; XA模式 優(yōu)點(diǎn) : 1.事務(wù)的強(qiáng)一致性,只要有失敗的,TC事務(wù)協(xié)調(diào)者就會(huì)發(fā)送信息讓RM回滾——滿足ACID原則 2.沒(méi)有代碼侵入,常用數(shù)據(jù)庫(kù)都支持 缺點(diǎn) : 1.第一階段就要鎖定數(shù)據(jù)庫(kù)資源

    2024年02月07日
    瀏覽(43)
  • 分布式事務(wù)TCC 你真的理解了嗎

    分布式事務(wù)TCC 你真的理解了嗎

    TCC(補(bǔ)償事務(wù)) TCC 屬于目前比較火的一種柔性事務(wù)解決方案。TCC 這個(gè)概念最早誕生于數(shù)據(jù)庫(kù)專家帕特 · 赫蘭德(Pat Helland)于 2007 發(fā)表的 《Life beyond Distributed Transactions: an Apostate’s Opinion》 這篇論文,感興趣的小伙伴可以閱讀一下這篇論文。 三個(gè)階段 簡(jiǎn)單來(lái)說(shuō),TCC 是 Tr

    2024年02月02日
    瀏覽(20)
  • 分布式事務(wù)-TCC案例分析流程圖

    分布式事務(wù)-TCC案例分析流程圖

    防止cancel方法在最后執(zhí)行出現(xiàn)問(wèn)題,用戶收到提示已經(jīng)退款成功但是由于cancel過(guò)慢或者出現(xiàn)問(wèn)題(雖然最后會(huì)重試成功但是用戶體驗(yàn)很差),可以做以下的業(yè)務(wù)sql模型優(yōu)化(增加一個(gè)凍結(jié)金額)。

    2024年02月07日
    瀏覽(24)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包