最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

TCC分布式事務(wù)七種異常情況小結(jié)

 更新時(shí)間:2024年11月04日 09:54:10   作者:我是小趴菜  
這篇文章主要為大家詳細(xì)介紹了在整個(gè)TCC模型過(guò)程中可能會(huì)出現(xiàn)的七種異常情況,文中的示例代碼簡(jiǎn)潔易懂,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

TCC標(biāo)準(zhǔn)編程模型

異常一:try階段異常

在try階段異常之后,就會(huì)執(zhí)行cancel階段,此時(shí)cancel階段是一定要保證成功的,如果cancel階段沒(méi)有執(zhí)行成功,那么就要進(jìn)行重試

異常二:cancel階段異常

其實(shí)這個(gè)異常的處理方式和異常一是一樣的,失敗了就重試,如果一直重試失敗,那么就要進(jìn)行人工干預(yù)

異常三:confirm提交異常

try階段成功了,那么confirm一定要成功,如果失敗了,那么就要進(jìn)行重試,重試多次還未成功,那么就要進(jìn)行人工干預(yù)

但是這里重試要注意,因?yàn)樵赾onfirm階段有二步數(shù)據(jù)庫(kù)操作,如果扣凍結(jié)張三20元成功了,但是李四加20元失敗了,這時(shí)候重試就要做判斷,看張三扣減20元是否之前已經(jīng)操作成功了,如果操作成功了,就不要再次進(jìn)行扣減凍結(jié)的操作

異常四:本地事務(wù)與TCC事務(wù)沖突

在try階段我們添加了一個(gè)本地事務(wù),如果這時(shí)候try階段異常,那么本地事務(wù)就會(huì)回滾,所以這時(shí)候凍結(jié)張三20元的操作就會(huì)回滾,也就不會(huì)被凍結(jié)。那么這時(shí)候try階段異常了,就會(huì)執(zhí)行cancel階段進(jìn)行回滾

在cancel階段,我們會(huì)還張三凍結(jié)的20元,這時(shí)候如果cancel執(zhí)行成功,那么張三的金額就會(huì)多出20元,就會(huì)造成數(shù)據(jù)的不一致,所以一般不要加本地事務(wù)

@Transaction(rollback=Exception.class)
@Hmily(comfirmMethod="confirmMethod",cancelMethod="cancelMethod")
public void try() {
  //查詢(xún)張三余額信息  
  Account account = accountMapper.selectByUserId(1);
  //凍結(jié)張三20元
  account.setDJAccount(20);
  accountMapper.updateById(account);
}

異常五:空回滾

為什么會(huì)有空回滾的異常呢? 比如我們?cè)趫?zhí)行try階段的時(shí)候,由于超時(shí)了,導(dǎo)致TCC就去執(zhí)行cancel階段了,但是這時(shí)候try階段還沒(méi)有執(zhí)行,也就是try階段還沒(méi)有凍結(jié)張三20元,這時(shí)候就造成了空回滾。

這時(shí)候我們需要引入其它手段,比如增加一張日志表,在回滾的時(shí)候,判斷一下這是事務(wù)有沒(méi)有執(zhí)行try階段,也就是這個(gè)事務(wù)有沒(méi)有執(zhí)行過(guò)try階段,如果沒(méi)有就不要執(zhí)行cancel階段的操作了。

異常六:第二階段重復(fù)提交

第二階段包括confirm,cancel,為什么會(huì)有重復(fù)提交呢? 因?yàn)槲覀儾荒鼙WCconfirm階段或者cancel階段一定能成功,如果不成功那么我們就要進(jìn)行重試,

舉個(gè)例子,在confirm階段有二步數(shù)據(jù)庫(kù)操作,假設(shè)扣減張三凍結(jié)20元成功,但是李四加20元失敗了,這時(shí)候我們就要進(jìn)行重試,但是重試的時(shí)候我們扣減張三凍結(jié)的20元已經(jīng)操作成功了,所以不需要再次扣減了,所以我們要做好類(lèi)似去重的操作,之前操作成功的就不要再次進(jìn)行操作了

異常七:防懸掛

cancel階段比try階段先執(zhí)行,由于網(wǎng)絡(luò)原因?qū)е聇ry階段超時(shí),這時(shí)候就會(huì)執(zhí)行cancel階段操作,等cancel階段執(zhí)行完了,這時(shí)候try才執(zhí)行,雖然事務(wù)失敗了,但是這個(gè)事務(wù)已經(jīng)結(jié)束了,所以這時(shí)候的try方法一定不能執(zhí)行

以上就是TCC分布式事務(wù)七種異常情況小結(jié)的詳細(xì)內(nèi)容,更多關(guān)于TCC分布式事務(wù)異常的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 使用java API實(shí)現(xiàn)zip遞歸壓縮和解壓文件夾

    使用java API實(shí)現(xiàn)zip遞歸壓縮和解壓文件夾

    這篇文章主要介紹了使用java API實(shí)現(xiàn)zip遞歸壓縮文件夾及解壓,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08
  • Lucene詞向量索引文件構(gòu)建源碼解析

    Lucene詞向量索引文件構(gòu)建源碼解析

    這篇文章主要為大家介紹了Lucene詞向量索引文件構(gòu)建源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • Struts2實(shí)現(xiàn)上傳單個(gè)文件功能

    Struts2實(shí)現(xiàn)上傳單個(gè)文件功能

    這篇文章主要為大家詳細(xì)介紹了Struts2實(shí)現(xiàn)上傳單個(gè)文件功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • restTemplate超時(shí)處理的策略方案

    restTemplate超時(shí)處理的策略方案

    這篇文章主要為大家介紹了restTemplate超時(shí)處理的策略方案,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • RabbitMQ交換機(jī)與Springboot整合的簡(jiǎn)單實(shí)現(xiàn)

    RabbitMQ交換機(jī)與Springboot整合的簡(jiǎn)單實(shí)現(xiàn)

    這篇文章主要介紹了RabbitMQ交換機(jī)與Springboot整合的簡(jiǎn)單實(shí)現(xiàn),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-07-07
  • Mybatis操作Clickhouse數(shù)組的最佳實(shí)踐分享

    Mybatis操作Clickhouse數(shù)組的最佳實(shí)踐分享

    ClickHouse 的 Array(T) 數(shù)據(jù)類(lèi)型支持任意有效數(shù)據(jù)類(lèi)型作為元素,包括基本類(lèi)型、嵌套數(shù)組和可空類(lèi)型,本文給大家分享了Mybatis操作Clickhouse數(shù)組的最佳實(shí)踐,需要的朋友可以參考下
    2025-09-09
  • java版本管理工具jenv的實(shí)現(xiàn)

    java版本管理工具jenv的實(shí)現(xiàn)

    jenv是一個(gè)專(zhuān)注于管理多個(gè)Java版本的工具,適合需要在不同項(xiàng)目或環(huán)境中切換Java版本的開(kāi)發(fā)者,支持插件擴(kuò)展,并且可以與其他開(kāi)發(fā)工具無(wú)縫集成,感興趣的可以了解一下
    2025-07-07
  • Java中HTTP GET方法調(diào)用帶有body的問(wèn)題解決

    Java中HTTP GET方法調(diào)用帶有body的問(wèn)題解決

    這篇文章主要為大家詳細(xì)介紹了Java如何解決HTTP GET方法調(diào)用帶有body的問(wèn)題,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以參考一下
    2024-02-02
  • SpringBoot2.x 集成騰訊云短信的詳細(xì)流程

    SpringBoot2.x 集成騰訊云短信的詳細(xì)流程

    本文主要對(duì)SpringBoot2.x集成騰訊云短信進(jìn)行簡(jiǎn)單總結(jié),其中SpringBoot使用的2.4.5版本,本文通過(guò)業(yè)務(wù)流程圖實(shí)例代碼相結(jié)合給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2021-06-06
  • 基礎(chǔ)不牢,地動(dòng)山搖,Java基礎(chǔ)速來(lái)刷刷

    基礎(chǔ)不牢,地動(dòng)山搖,Java基礎(chǔ)速來(lái)刷刷

    基礎(chǔ)不牢,地動(dòng)山搖,快來(lái)一起學(xué)習(xí)一下基礎(chǔ)吧,不斷地學(xué)習(xí)就算是基礎(chǔ)也會(huì)有新的認(rèn)知和收獲,加油
    2021-08-08

最新評(píng)論

梁河县| 隆子县| 磴口县| 泰宁县| 苍溪县| 浮梁县| 合作市| 北碚区| 永年县| 九龙县| 木里| 白玉县| 南和县| 乐昌市| 中超| 洪江市| 凯里市| 哈巴河县| 乃东县| 辛集市| 宁安市| 东明县| 临高县| 兴业县| 康马县| 鹤庆县| 司法| 武强县| 高碑店市| 西乌珠穆沁旗| 溆浦县| 于都县| 巢湖市| 敦化市| 成武县| 拉萨市| 武鸣县| 淄博市| 十堰市| 海伦市| 塘沽区|