日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[转]分布式事务之TCC服务设计和实现注意事项

發(fā)布時間:2023/12/4 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [转]分布式事务之TCC服务设计和实现注意事项 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1、TCC簡介

TCC是一種比較成熟的分布式事務解決方案,可用于解決跨庫操作的數(shù)據(jù)一致性問題;

TCC是服務化的兩階段編程模型,其Try、Confirm、Cancel 3個方法均由業(yè)務編碼實現(xiàn);

其中Try操作作為一階段,負責資源的檢查和預留,Confirm操作作為二階段提交操作,執(zhí)行真正的業(yè)務,Cancel是預留資源的取消;

如下圖所示,業(yè)務實現(xiàn)TCC服務之后,該TCC服務將作為分布式事務的其中一個資源,參與到整個分布式事務中;事務管理器分2階段協(xié)調(diào)TCC服務,在第一階段調(diào)用所有TCC服務的Try方法,在第二階段執(zhí)行所有TCC服務的Confirm或者Cancel方法;

2、用戶在實現(xiàn)TCC服務時,有以下注意事項

  • 1、業(yè)務操作分兩階段完成:

如下圖所示,接入TCC前,業(yè)務操作只需要一步就能完成,但是在接入TCC之后,需要考慮如何將其分成2階段完成,把資源的檢查和預留放在一階段的Try操作中進行,把真正的業(yè)務操作的執(zhí)行放在二階段的Confirm操作中進行;

TCC服務要保證第一階段Try操作成功之后,二階段Confirm操作一定能成功;

  • 2、允許空回滾;

如下圖所示,事務協(xié)調(diào)器在調(diào)用TCC服務的一階段Try操作時,可能會出現(xiàn)因為丟包而導致的網(wǎng)絡超時,此時事務協(xié)調(diào)器會觸發(fā)二階段回滾,調(diào)用TCC服務的Cancel操作;

TCC服務在未收到Try請求的情況下收到Cancel請求,這種場景被稱為空回滾;TCC服務在實現(xiàn)時應當允許空回滾的執(zhí)行;

  • 3、防懸掛控制;

如下圖所示,事務協(xié)調(diào)器在調(diào)用TCC服務的一階段Try操作時,可能會出現(xiàn)因網(wǎng)絡擁堵而導致的超時,此時事務協(xié)調(diào)器會觸發(fā)二階段回滾,調(diào)用TCC服務的Cancel操作;在此之后,擁堵在網(wǎng)絡上的一階段Try數(shù)據(jù)包被TCC服務收到,出現(xiàn)了二階段Cancel請求比一階段Try請求先執(zhí)行的情況;

用戶在實現(xiàn)TCC服務時,應當允許空回滾,但是要拒絕執(zhí)行空回滾之后到來的一階段Try請求;

  • 4、冪等控制:

無論是網(wǎng)絡數(shù)據(jù)包重傳,還是異常事務的補償執(zhí)行,都會導致TCC服務的Try、Confirm或者Cancel操作被重復執(zhí)行;用戶在實現(xiàn)TCC服務時,需要考慮冪等控制,即Try、Confirm、Cancel 執(zhí)行一次和執(zhí)行多次的業(yè)務結(jié)果是一樣的;

  • 5、業(yè)務數(shù)據(jù)可見性控制;

TCC服務的一階段Try操作會做資源的預留,在二階段操作執(zhí)行之前,如果其他事務需要讀取被預留的資源數(shù)據(jù),那么處于中間狀態(tài)的業(yè)務數(shù)據(jù)該如何向用戶展示,需要業(yè)務在實現(xiàn)時考慮清楚;通常的設計原則是“寧可不展示、少展示,也不多展示、錯展示”;

  • 6、業(yè)務數(shù)據(jù)并發(fā)訪問控制;

TCC服務的一階段Try操作預留資源之后,在二階段操作執(zhí)行之前,預留的資源都不會被釋放;如果此時其他分布式事務修改這些業(yè)務資源,會出現(xiàn)分布式事務的并發(fā)問題;

用戶在實現(xiàn)TCC服務時,需要考慮業(yè)務數(shù)據(jù)的并發(fā)控制,盡量將邏輯鎖粒度降到最低,以最大限度的提高分布式事務的并發(fā)性;

3、總結(jié)

螞蟻金服使用TCC有10年歷史,在TCC應用方面積累了大量實踐經(jīng)驗;除了上述TCC服務的設計注意事項外,我們在解決用戶高并發(fā)、高可用需求方面也提供了解決方案,我們對分布式事務做了極致的性能優(yōu)化以支持雙11等大促的高并發(fā)需求,我們基于螞蟻LDC架構(gòu)的高可用方案能使分布式事務服務達到99.99%的可用性;

螞蟻金服大部分業(yè)務系統(tǒng)均采用TCC的方式接入分布式事務,但設計TCC服務時要遵循大量設計規(guī)范,這無疑對用戶提了非常高的要求;為了簡化用戶接入分布式事務的門檻,螞蟻金服的分布式事務框架(SOFA-DTX)推出了FMT(Framework-managed transactions)模式和XA模式,這兩種模式均不需要用戶實現(xiàn)TCC服務,用戶只需要關(guān)注自身業(yè)務SQL便可;DTX的三種模式:TCC、FMT和XA相互之間是功能互補,相輔相成的,形成了螞蟻金服完善的分布式事務解決方案。

SOFA-DTX全面覆蓋金融場景,金融級容災保障、提供豐富的接入模式并且使用簡潔易于接入;目前已經(jīng)應用在支付寶、網(wǎng)上銀行、螞蟻財富、芝麻信用、南京銀行等項目中。

總結(jié)

以上是生活随笔為你收集整理的[转]分布式事务之TCC服务设计和实现注意事项的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。