精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

那些用Go實現的分布式事務框架之二

開發 后端 分布式
seata中的TM對標dtm事務SDK。作用都是一樣:第一階段開啟一個全局事務,執行各RM分支事務,第二階段根據RM第一階段執行結果,決定調用TC(seata)|TM(dtm) commit或者rollback。

[[440473]]

本文轉載自微信公眾號「RememberGo」,作者吳親庫里。轉載本文請聯系RememberGo公眾號。

開篇

上一篇那些用Go實現的分布式事務框架我們主要介紹的是seata-golang。一個對標seata的go語言實現,當然版本還是落后Java版很多的。

這次我們來介紹一下另一個go實現的分布式事務:dtm。

首先來看下dtm整體架構圖(來源官網)。

再來看之前的seata架構圖。

從架構上來看,大差不差。

seata中的TC對標dam的TM。

RM兩邊意思一致。

seata中的TM對標dtm事務SDK。作用都是一樣:第一階段開啟一個全局事務,執行各RM分支事務,第二階段根據RM第一階段執行結果,決定調用TC(seata)|TM(dtm) commit或者rollback。

架構上,個人感覺只是因為模塊名稱以及圖畫不一樣的差別,當然在實現細節上還是有很大差別的。

我們先簡單介紹下DTM各個模塊。

TM

TM 層在代碼中是沒有具體的主體結構的,開始都是函數之前的調用。

啟動TM實際上開啟了兩個服務,http以及grpc這兩個服務。

http路由,

gRPC接口,

即然提供了兩個服務入口,那理所當然有公共處理核心業務的部分。

TM對數據的存儲管理并不是依賴于接口,而是依賴于common.DB 結構。根據配置文件中DB.driver 的值決定底層數據庫是mysql還是postgres兩種。

再看這個DB結構,所以本質上無論底層是哪種數據庫,都是直接依賴gorm來對數據進行操作的。

接著,看下TM是如何通知各個RM進行commit或者rollback的?

舉一個TCC模式的例子。

TCC的兩個階段。

  • 階段一: try。嘗試執行,調用各RM自定義的try行為,預留必要的業務資源。
  • 階段二:Confirm(階段一所有參與本次事務的try行為都成功)。調用各分支事務的Confirm方法,真正執行業務,并且只使用try階段預留的資源。
  • 階段二:Cancel(階段一任一參與本次事務的try行為失敗)。調用各分支事務的Cancel方法,釋放一階段try所預留的資源。

從上面我們可以得知,TCC模式下,TM在第二階段要么通知各分支事務Confirm要么Cancel。

在注冊各RM事務分支到TM的時候,最終TM會為每一個分布式事務的參與者(RM)生成兩條分支信息。

就像這樣,

對,就是把對應的RM資源操作地址直接存入。

當TM接收到commit或者rollback命令,在處理完自身邏輯(一般就是修改Gloable狀態),就需要開始處理每一個注冊進來的分支事務了,說白了就是需要調用各個分支事務對應操作的接口。

這里的t.getProcessor() 是需要根據當前事務的類型(TCC、SAGA、XA)獲取到對應的處理器來進行邏輯的處理。

當然,每個事務處理器只需要實現接口,

真正調用RM資源服務地址的時候,分為http和grpc,這是由開發者決定的。

在v1.6之前的版本,grpc的請求是很簡單粗暴解析地址方法然后連接的。

現在為了支持那些采用gRPC Resolver 機制之上的一些微服務框架接入,做了一塊抽象。感興趣[1]可以看下,這里就不介紹了。

SDK

至于SDK,每一個事務模式都是獨立的,本質上是沒有關聯的。比如下面我們啟動一個TCC分布式事務。這個分布式事務是由兩個服務組成,簡稱+30和-30的服務。

  • 從上面的調用中我們還是能還原出整體流程。
  • 調用TM,得到一個分布式id
  • 調用TccGlobalTransaction函數開啟分布式事務。
  • 調用TM prepare(這步只是為了查看第一步產生的那個分布式事務狀態是否處于prepare。這里沒看明白,此時還未注冊執行分支,全局狀態不是應該只會存在初始化狀態嗎)
  • 上一步沒問題,執行傳入的閉包函數,即CallBranch 函數里向TM注冊參與事務的TM分支。注冊完成后,開始第一階段調用各分支的try服務。
  • 各分支try服務調用結束,根據第一階段結果決定通知TM是submit還是abort。

另外提一點,分布式事務常見的一些問題:比如空補償、重掛等問題。

一般情況下,業務需要自行去處理這種場景,以免造成不可描述的錯誤。

dtm里面提供了對應子事務屏障方案。核心就在,

其實就是利用數據庫的唯一索引機制,當然每個RM資源你都得新增一張表。

上面提到,dtm的TM角色本質上就是對應 seata 中的 TC,但是他們的處理模式是不同的。

dtm中的TM會根據注冊時的各分支保存的地址,決定通過http還是rpc調用各RM操作,是由TM直接發起對RM的請求。

seata-go的實現中,TC是不參與直接調用RM的。

還記得上篇提到一個雙向流RPC接口(BranchCommunicate)。TC通過這個接口把對應分支處理信息傳遞給RM管理器。

然后由RM管理器根據事務類型選擇對應的事務管理器進行處理,最終調用的是對應事務類型管理器的BranchCommit方法。

下面是一個TCC事務類型管理器的處理。

對應的事務RM管理器是如何通知、處理各個RM資源的。

原理就是我上篇提到的作者實現的一個全局事務代理模式,本質上是利用go的反射實現的,感興趣的可以自己去扒下源碼,也可以看看作者對實現全局事務代理的介紹[2]。

總結

這篇文章主要介紹了dtm實現的一些細節,從這兩篇文章大體能看出實現上的部分區別,更多的細節還得靠自己去挖掘。

最后再問幾個問題,

  • 日常開發中你們哪些場景是用到了分布式事務?用的是哪個框架還是自研的?
  • 或者說在分布式環境下,一致性的問題你們是如何解決的?

相關

https://zhuanlan.zhihu.com/p/351391359

https://dtm.pub/protocol/support.html

 

責任編輯:武曉燕 來源: RememberGo
相關推薦

2021-12-09 10:45:19

分布式事務框架

2022-06-27 08:21:05

Seata分布式事務微服務

2024-01-05 07:28:50

分布式事務框架

2019-12-27 16:00:56

分布式事務框架Java

2014-07-22 10:42:04

2025-06-11 08:01:06

2022-06-21 08:27:22

Seata分布式事務

2021-08-06 08:33:27

Springboot分布式Seata

2017-07-26 15:08:05

大數據分布式事務

2020-03-31 08:05:23

分布式開發技術

2021-07-09 05:49:53

分布式代碼算法

2024-12-02 09:19:44

2019-10-10 09:16:34

Zookeeper架構分布式

2023-01-06 09:19:12

Seata分布式事務

2010-06-03 19:46:44

Hadoop

2009-06-19 15:28:31

JDBC分布式事務

2009-09-18 15:10:13

分布式事務LINQ TO SQL

2021-09-29 09:07:37

分布式架構系統

2021-09-14 13:55:15

Go開發分布式

2021-06-28 10:51:55

Redisson分布式鎖Watchdog
點贊
收藏

51CTO技術棧公眾號

日韩欧美国产成人| 免费观看30秒视频久久| 欧美精品一区二区三区蜜桃 | 国产又色又爽又黄的| 日韩超碰人人爽人人做人人添| 亚洲视频香蕉人妖| 国产欧美日韩伦理| 成人毛片一区二区三区| 五月婷婷六月综合| 日韩精品视频在线免费观看| 日韩av在线中文| 9999在线视频| 99麻豆久久久国产精品免费优播| 欧美激情视频免费观看| 精品无码国产污污污免费网站| 午夜欧美激情| 中文字幕亚洲一区二区av在线 | 久久午夜av| 爱福利视频一区| 亚洲一区二区三区无码久久| 日韩一级特黄| 一本色道久久综合狠狠躁的推荐 | 亚洲欧美激情一区二区| 蜜桃视频在线观看91| 久久久成人免费视频| **女人18毛片一区二区| 日韩精品一区国产麻豆| 91黄色在线看| 黄色网址在线免费播放| 国产高清在线精品| 国产美女精彩久久| 美女又爽又黄免费视频| 亚洲区国产区| 欧美另类高清videos| 特黄一区二区三区| 欧美午夜在线播放| 欧美日韩国产系列| 妞干网在线免费视频| 在线国产91| 久久人人97超碰com| 精品国产乱码久久久久久丨区2区 精品国产乱码久久久久久蜜柚 | 久久久亚洲人| 国a精品视频大全| 日韩欧美中文字幕视频| 天天做天天爱天天爽综合网| 精品999久久久| 日韩精品xxx| 欧美成年网站| 欧美一区二区三区人| 91女神在线观看| 国产成人午夜性a一级毛片| 色婷婷激情综合| 老司机午夜av| 激情亚洲影院在线观看| 日韩欧美在线视频日韩欧美在线视频 | 亚洲中文字幕无码av永久| 好吊日视频在线观看| 91影院在线免费观看| 国产精品污www一区二区三区| 精品黑人一区二区三区| 亚洲自拍另类| 日韩免费在线观看视频| 日韩欧美在线观看免费| 久久亚洲精品伦理| 国产精品久久久久久av福利| 精品亚洲永久免费| 在线观看不卡| 78色国产精品| 日本青青草视频| 欧美精品一卡| www国产亚洲精品久久网站| 精品熟妇无码av免费久久| 欧美电影免费观看高清| 欧美大成色www永久网站婷| 欧美日韩国产精品一区二区三区| 精品视频亚洲| 久久精品免费电影| 国产污片在线观看| 中文一区一区三区免费在线观看| 亚洲一区二区久久久| 欧亚乱熟女一区二区在线| 日韩理论电影中文字幕| 欧美r级电影在线观看| 完美搭档在线观看| 欧美日韩国产一区二区三区不卡 | 欧美a在线视频| 免费看av不卡| 欧美日韩一区二区三区在线看| www.玖玖玖| 日韩欧美激情| 精品国产乱码久久久久久图片| 4438x全国最大成人| 婷婷成人综合| 久久亚洲精品小早川怜子66| 日韩美女视频网站| 蜜桃在线一区二区三区| 俄罗斯精品一区二区| 日本韩国一区| 亚洲男人的天堂在线观看| 久久精品视频16| 成人午夜在线| 日韩成人激情在线| 午夜爱爱毛片xxxx视频免费看| 亚洲成人精品| 2019最新中文字幕| 国产jzjzjz丝袜老师水多| 精品写真视频在线观看| 国产原创精品| 日本一区视频| 亚洲蜜桃精久久久久久久| 男人操女人免费软件| 日韩精品一区二区三区中文字幕| 欧美变态tickling挠脚心| av网站免费在线看| 日韩国产欧美| 久久精品视频免费播放| 亚洲影院在线播放| 蜜臀av一区二区在线免费观看| 国产精品电影在线观看| 欧美熟女一区二区| 亚洲精品国产一区二区精华液| 欧美日韩中文字幕在线播放| 国模一区二区| 亚洲精品视频网上网址在线观看| 美国黄色特级片| 亚洲免费综合| 国产精品国产三级国产专区53| 婷婷亚洲一区二区三区| 亚洲美女区一区| 性生活免费在线观看| 免费看成人哺乳视频网站| 久久理论片午夜琪琪电影网| 国产片高清在线观看| 国产精品网站导航| 久久精品香蕉视频| 免费一区二区三区视频导航| 97av在线视频| 欧美自拍偷拍第一页| 国产亚洲视频系列| 免费无码av片在线观看| 亚洲成人1区| 中文字幕国产日韩| 日韩不卡高清视频| 国产午夜精品一区二区| 欧美极品欧美精品欧美图片| 欧美日韩麻豆| 97香蕉超级碰碰久久免费软件| 综合久久中文字幕| 粉嫩av一区二区三区粉嫩| 久久久久久久久网| 日韩精品视频中文字幕| 原创国产精品91| 波多野结衣网站| 欧美激情一区二区三区全黄| 亚洲视频在线a| 久久国产综合| 成人免费视频在线观看超级碰| 日产精品久久久久久久性色| 欧美日韩国产综合新一区| 菠萝菠萝蜜网站| 国产偷自视频区视频一区二区| 91久久精品国产| 黄色精品免费看| 欧美成人video| 色偷偷男人天堂| 国产一区在线看| av在线免费观看国产| 欧美aaaaaaaa牛牛影院| 国产激情久久久| av福利精品| 欧美一级黄色大片| 国产精品成人av久久| 国产精品资源网站| 日韩视频免费播放| 欧美日韩xxxx| 91精品久久久久久| 激情av在线播放| 亚洲精品一区二三区不卡| 中文字幕免费高清在线观看| 亚洲乱码国产乱码精品精98午夜 | 青青操在线播放| 国产最新精品精品你懂的| 欧美亚洲另类在线一区二区三区| xxx在线免费观看| 亚洲欧美国产精品| 国产绿帽刺激高潮对白| 亚洲午夜av在线| 亚洲天堂视频一区| 国模一区二区三区白浆| 99久久国产综合精品五月天喷水| 精品午夜视频| 久久久精品国产| 国产又粗又猛又爽又黄91| 一区二区欧美视频| av网站免费在线看| 日韩av电影天堂| 日韩高清三级| 伊人久久亚洲| 国产精品自拍视频| 国产资源在线观看入口av| 深夜福利一区二区| 天天躁日日躁狠狠躁伊人| 欧美高清精品3d| 久久久久久久久久久久久av| 亚洲欧洲av在线| 人妻丰满熟妇aⅴ无码| 国产伦精品一区二区三区视频青涩| 少妇高潮流白浆| 亚洲精品**不卡在线播he| 不卡日韩av| 粉嫩av一区二区三区四区五区| 中文字幕亚洲综合久久| 日日躁夜夜躁白天躁晚上躁91| 亚洲成人免费在线| 欧美高清性xxxx| 国产乱人伦偷精品视频不卡| 男女男精品视频站| 性xx色xx综合久久久xx| www.成年人视频| 亚洲乱码在线| 伊人久久av导航| 久久成人av| 久精品国产欧美| 麻豆精品蜜桃| 欧美亚洲国产视频小说| 黄色大片在线| 欧美寡妇偷汉性猛交| 四虎影院在线域名免费观看| 日韩免费看网站| 国产免费黄色片| 欧美日韩国产在线观看| 黄色网址中文字幕| 欧美日韩性视频| 日本系列第一页| 亚洲福中文字幕伊人影院| 久草网站在线观看| 亚洲激情六月丁香| 男女做暖暖视频| 亚洲三级在线免费观看| 99久久99久久精品国产| 91蜜桃视频在线| 亚洲国产精品无码久久久久高潮| 日本欧美一区二区三区| av网址在线观看免费| 免费欧美在线| 黄色一级片播放| 国产九九精品| 国产一区亚洲二区三区| 午夜日韩福利| 丁香六月激情婷婷| 99久久婷婷这里只有精品 | 中文字幕欧美日韩| 黄色在线免费观看大全| 亚洲免费伊人电影在线观看av| 精品国产999久久久免费| 欧美一区二区人人喊爽| 国产精品午夜一区二区| 亚洲国产视频在线| 激情无码人妻又粗又大| 最新成人av在线| 五月婷婷一区二区| 亚洲欧洲精品天堂一级| 国产盗摄一区二区三区在线| 亚洲无线码一区二区三区| 国产视频91在线| 一本大道久久a久久综合| 亚洲天堂视频在线播放| 欧美精品久久久久久久久老牛影院| 亚洲天堂男人av| 午夜精品国产更新| 成人a v视频| 欧美精品第1页| wwwav网站| 亚洲精品日韩久久久| 日本精品久久久久久| 亚洲欧美另类在线观看| 欧美成人xxx| 欧美激情在线视频二区| av网址在线| 久久久精品视频成人| 丰满大乳少妇在线观看网站| 欧美精品手机在线| 亚洲女色av| 91九色视频在线| 任你躁在线精品免费| 精品视频导航| 久久密一区二区三区| 激情小视频网站| 日本午夜一本久久久综合| 永久看看免费大片| 国产老肥熟一区二区三区| 97香蕉碰碰人妻国产欧美 | 91精品观看| 妞干网在线观看视频| 日本强好片久久久久久aaa| 91精品国产高清91久久久久久| 国产精品亚洲一区二区三区妖精| 岛国av在线免费| 本田岬高潮一区二区三区| 国产又粗又猛又爽又黄的视频四季| 中文子幕无线码一区tr| 久久久久久天堂| 黄网动漫久久久| 久草视频在线观| 欧美精品99久久久**| 日本亚洲一区| 欧美极品少妇xxxxⅹ免费视频 | 日韩视频永久免费观看| 精精国产xxxx视频在线野外| 91久久精品美女高潮| 亚洲国产一区二区三区网站| 日本在线高清视频一区| 在线欧美日韩| 自拍一级黄色片| 日本一区二区三区四区在线视频| 国产精品suv一区二区88| 欧美日韩免费看| 好吊色一区二区| 久久久精品国产一区二区| 四虎4545www精品视频| 精品国产乱码一区二区三区四区| 无码日韩精品一区二区免费| 日本精品福利视频| 国产亚洲亚洲| 人妻激情偷乱频一区二区三区| 久久综合国产精品| 天天爽天天爽天天爽| 日本精品一级二级| 你懂得网站在线| 91av在线免费观看视频| 超碰成人福利| 奇米777四色影视在线看| 韩国欧美国产1区| 免费看黄色aaaaaa 片| 午夜天堂影视香蕉久久| 亚洲a视频在线| 蜜臀久久99精品久久久无需会员| 亚洲三级欧美| 久久青青草原| 国产精品日韩| 老司机福利av| 色婷婷综合久久久久中文 | av电影免费在线观看| 成人a在线观看| 999久久久国产精品| 国产色视频在线播放| 国产精品久久免费看| 亚洲综合免费视频| 丝袜一区二区三区| 国产区一区二| av片在线免费| 成人高清视频在线| 少妇一级淫片免费放中国 | 久艹在线免费观看| 丝袜美腿成人在线| 国产精品国产三级国产专业不| 一区二区欧美视频| 色wwwwww| 日韩免费av在线| 成人国产精品一级毛片视频| 五月天婷婷亚洲| 亚洲女人****多毛耸耸8| 中文在线观看免费高清| 搡老女人一区二区三区视频tv| 性欧美18~19sex高清播放| 久久久久久欧美精品色一二三四| 欧美久久视频| 无码精品一区二区三区在线播放 | 中文字幕在线亚洲三区| 韩国视频一区二区| 国产在线视频第一页| 精品亚洲男同gayvideo网站| 欧美日韩不卡| 中国女人做爰视频| 不卡的av电影在线观看| 91久久国产综合久久91| 久久久精品国产亚洲| 久久丝袜视频| 在线免费观看视频黄| 有码一区二区三区| 国产普通话bbwbbwbbw| 午夜精品视频网站| 色135综合网| 小毛片在线观看| 欧美日韩精品一区二区在线播放| 男同在线观看| 日本在线观看天堂男亚洲| 欧美黄色网视频| 亚洲老女人av| 亚洲国产成人精品视频| 久久精品国产av一区二区三区| 国产 日韩 欧美| 亚洲成人av在线| 国产精品久久不卡| 精品久久网站| 一区国产精品| jiyouzz国产精品久久| 国产精品高清无码| 欧美国产日韩一区| 成人精品天堂一区二区三区|