精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

久久夜色精品国产噜噜av| 欧美特黄视频| 欧美精品久久一区二区三区| 超碰97免费观看| 精品人妻无码一区二区色欲产成人| 欧美日本一区二区高清播放视频| 亚洲精品99999| 宅男噜噜噜66国产免费观看| 青青草原国产在线| 久久亚洲免费视频| 亚洲一区二区三区视频播放| 在线精品免费视| 婷婷综合在线| 亚洲免费人成在线视频观看| 天天久久综合网| 欲香欲色天天天综合和网| 亚洲人精品一区| 欧美精品v日韩精品v国产精品| 国产欧美久久久精品免费| 亚洲在线一区| 欧美人在线视频| 精品一区二区6| 六月丁香久久丫| 欧美高清性hdvideosex| 777米奇影视第四色| 伊人福利在线| 国产精品美女久久久久aⅴ国产馆| 成人在线资源网址| 国产又粗又猛又爽又黄的视频一| 空姐吹箫视频大全| 性感美女一级片| 久久66热偷产精品| 国产99久久精品一区二区| 久久综合成人网| 亚洲国产精品久久久久蝴蝶传媒| 亚洲色图在线观看| 中文字幕天堂av| 欧美一区一区| 欧美电影一区二区| 宅男噜噜噜66国产免费观看| 亚洲国产欧美日本视频| 亚洲大片在线观看| 91视频 - 88av| 91小视频xxxx网站在线| 国产精品萝li| 天天综合狠狠精品| 黄色毛片在线看| 久久综合九色综合97婷婷女人| 国产精品二区二区三区| 国产v在线观看| 激情欧美一区二区三区在线观看| 国产精品久久久一区| 五月婷婷激情视频| 久久九九电影| 日韩av大片在线| 日日骚av一区二区| 可以免费看不卡的av网站| 5566日本婷婷色中文字幕97| 亚洲国产成人精品激情在线| 精品91在线| 久久久久久久一区二区三区| 亚欧洲精品在线视频| 一区视频在线| 97香蕉超级碰碰久久免费的优势| 国产一级在线播放| 在线精品一区| 欧美亚洲在线观看| 国产免费a视频| 青青国产91久久久久久| 国产色婷婷国产综合在线理论片a| 波多野结衣网站| 麻豆久久久久久| 成人亲热视频网站| 国产 日韩 欧美 精品| 不卡的看片网站| 欧美一二三区| 日本视频不卡| 亚洲在线免费播放| 少妇性饥渴无码a区免费| 久久久人成影片一区二区三区在哪下载 | 日韩1区在线| 久久久国产成人精品| 久草网视频在线观看| 亚洲免费播放| 国产精品美女www| 99久久精品国产一区二区成人| 粉嫩欧美一区二区三区高清影视| 精品午夜一区二区三区| 福利视频在线播放| 亚洲激情自拍偷拍| jizzjizzxxxx| 成年永久一区二区三区免费视频| 日韩欧美三级在线| 成年人免费观看视频网站| 亚洲草久电影| 日韩美女在线播放| 国产男女无套免费网站| 99re热这里只有精品免费视频| 日韩国产欧美精品| 欧美xxxx做受欧美88bbw| 欧美性猛交xxxx乱大交蜜桃 | 在线成人视屏 | 国产国产精品| 91av在线免费观看视频| 在线观看毛片网站| 99久久久无码国产精品| 亚洲欧洲日韩综合二区| а√天堂8资源在线| 在线不卡中文字幕| 变态另类丨国产精品| 久久精品青草| 国产精品99久久久久久www| 国产按摩一区二区三区| 国产丝袜欧美中文另类| 被灌满精子的波多野结衣| 国产激情久久| 亚洲久久久久久久久久久| 欧美日韩免费做爰视频| 美腿丝袜亚洲综合| 你懂的视频在线一区二区| 羞羞电影在线观看www| 欧美色大人视频| 久久精品国产亚洲av麻豆| 黄色欧美日韩| 91中文在线观看| av资源网在线观看| 欧美日韩亚洲高清| 亚洲香蕉中文网| 综合一区在线| 国产原创欧美精品| 二区三区在线| 色狠狠桃花综合| 人妻丰满熟妇aⅴ无码| 欧美人成在线| 999国产在线| 91精选在线| 欧美一区二区三区日韩视频| a资源在线观看| 石原莉奈一区二区三区在线观看| 精品亚洲一区二区三区四区五区高| av在线免费网址| 欧美肥妇毛茸茸| 福利视频第一页| 久久狠狠亚洲综合| 视频一区视频二区视频三区视频四区国产| 老牛影视精品| 国产午夜精品久久久| 国产尤物在线视频| 91免费看片在线观看| 国产深夜男女无套内射| 亚欧日韩另类中文欧美| 欧美一级片久久久久久久| 天堂中文字幕av| 精品国产999| 国产伦精品一区二区三区妓女| 99成人免费视频| 日本精品一区二区三区视频| 日日夜夜天天综合| 在线看福利67194| 在线观看国产精品视频| 自拍偷在线精品自拍偷无码专区| 久国产精品视频| 欧美99久久| 电影午夜精品一区二区三区| av在线最新| 亚洲欧美日韩中文在线| 亚洲图片欧美日韩| 国产精品福利一区二区| 欧美日韩理论片| 欧美视频二区| 久久精品中文字幕一区二区三区 | 68国产成人综合久久精品| 亚洲a在线播放| 欧美人体视频xxxxx| 亚洲国产精品视频在线观看 | 在线不卡中文字幕| 激情四射综合网| 91在线观看污| 一路向西2在线观看| 天天射综合网视频| 国产精品二区在线| 性欧美gay| 久久夜色精品国产亚洲aⅴ| 亚洲美女性生活| 一本大道av一区二区在线播放| 性色国产成人久久久精品| 成人亚洲一区二区一| 国产一级片黄色| 欧美91大片| 日本视频一区二区不卡| 日本综合精品一区| 人体精品一二三区| caoporm免费视频在线| 日韩精品视频三区| 97国产精品久久久| 精品久久久久国产| 人人干在线观看| 99久久精品免费| www.cao超碰| 亚洲欧美卡通另类91av| 亚洲精品偷拍视频| 你懂的一区二区三区| 亚洲综合av影视| 欧美性片在线观看| 国精产品一区一区三区有限在线| 草碰在线视频| 日韩av综合网站| 国产草草影院ccyycom| 在线视频欧美区| 日本三级欧美三级| 中文字幕一区二区三区在线不卡| 国产麻豆剧传媒精品国产av| 紧缚奴在线一区二区三区| 青青在线视频观看| 精品9999| 欧美日韩激情四射| 手机在线电影一区| 欧洲亚洲一区| 日韩精品导航| 国产精品国色综合久久| av在线国产精品| 国产精品九九久久久久久久| 在线毛片观看| 7777免费精品视频| 激情图片在线观看高清国产| 日韩中文字幕在线精品| 搞黄视频免费在线观看| 日韩精品黄色网| 亚洲欧美另类日韩| 日韩一区二区在线观看视频| 一区二区精品视频在线观看| 91福利国产精品| 中文字幕激情小说| 高跟丝袜一区二区三区| 亚洲国产综合久久| 午夜精品成人在线| 成人免费看片98| 亚洲精品老司机| 真实国产乱子伦对白在线| 亚洲欧洲www| 国产精品麻豆免费版现看视频| 国产香蕉久久精品综合网| 中文字幕免费高清| 久久久久久久电影| 在线小视频你懂的| 国产日韩精品一区二区三区| 熟女高潮一区二区三区| 久久久久久久国产精品影院| 国产av自拍一区| 国产亚洲精品久| a级黄色免费视频| 国产精品每日更新在线播放网址| 青青青视频在线播放| 国产精品乱人伦| 天天爽天天爽天天爽| 亚洲欧美另类图片小说| 黄色一级片中国| 亚洲一区在线视频| 日韩av一二三区| 色综合久久九月婷婷色综合| 伊人久久久久久久久久久久| 欧美色涩在线第一页| 国产美女无遮挡永久免费| 日韩女优毛片在线| 无码国产色欲xxxx视频| 亚洲三级黄色在线观看| av在线天堂| 久久综合久久88| free性欧美| 日韩美女在线观看一区| 日韩黄色三级| 国产精品初高中精品久久| 亚洲国产最新| 青青草原国产免费| 在线视频观看日韩| 一本大道熟女人妻中文字幕在线| 日韩av中文字幕一区二区三区 | 先锋影音网一区二区| 999国产在线| 精品在线播放| 亚洲AV无码成人精品一区| 精品成人在线| aaaaaa亚洲| 国产一区二区不卡在线| 日本一区二区在线免费观看| 欧美国产欧美综合| 九九在线观看视频| 日本久久一区二区三区| 国产视频在线一区| 日韩精品中文字幕久久臀| 欧美激情午夜| 91国产美女在线观看| 日韩福利影视| 国产在线精品一区二区三区》 | 欧美激情精品| 日本精品一区二区三区高清 久久| 亚洲电影影音先锋| 国产 福利 在线| 国产真实乱子伦精品视频| 日本黄色免费观看| 国产精品护士白丝一区av| 国产无码精品在线播放| 欧美日韩一区 二区 三区 久久精品| 亚洲精品成av人片天堂无码| 在线观看成人黄色| 国产免费拔擦拔擦8x高清在线人| 成人网在线观看| 免费一区二区| 久久久亚洲国产精品| 国产在线精品一区在线观看麻豆| 大地资源二中文在线影视观看| 亚洲欧美另类图片小说| 亚洲 小说区 图片区| 亚洲成人激情视频| 成人在线app| 国产精品稀缺呦系列在线| 亚洲第一福利社区| 免费高清一区二区三区| 精品一区二区av| 国产精品天天干| 欧美日韩午夜视频在线观看| 高清一区二区三区四区| 不用播放器成人网| 精品三级在线| 色视频一区二区三区| 国产毛片一区| 国产污在线观看| 一区二区在线看| 国产女同91疯狂高潮互磨| 少妇高潮久久久久久潘金莲| 日本一区二区三区视频在线| 欧美一区二区三区电影在线观看| 99日韩精品| 精人妻一区二区三区| 亚洲综合在线观看视频| 国内精品久久久久久久久久久| 日韩在线观看免费全| 久久久久久一区二区三区四区别墅| 欧美精品一区二区三区在线四季 | 亚洲欧洲制服丝袜| 国产精品久久久久久久一区二区 | 日本不卡在线视频| 欧美黄色激情视频| 在线观看91精品国产入口| 毛片在线能看| 国产精品户外野外| 欧州一区二区| 国产wwwxx| 国产精品久久久久一区| 一级做a爱片性色毛片| 日韩视频精品在线| 精品一区视频| 六月婷婷激情综合| 99久久精品一区| 免费黄色网址在线| 亚洲网站在线观看| 成人福利片在线| 亚洲第一精品区| 国产成人午夜精品5599| 久久精品国产亚洲av麻豆色欲| 欧美精品一区二区三区蜜桃| 人在线成免费视频| 日韩影片在线播放| 精品亚洲porn| 久久久久久久久久久久久久久久久| 精品女同一区二区| 在线观看v片| 亚洲一区3d动漫同人无遮挡| 国产精品一区免费在线观看| 久久精品性爱视频| 亚洲美女黄色片| 日韩在线激情| 免费视频爱爱太爽了| 久久九九国产精品| 国产乱码久久久久| 久久久久日韩精品久久久男男| 亚洲人成精品久久久| 日韩av在线中文| 亚洲国产你懂的| 大乳在线免费观看| 亚洲综合成人婷婷小说| 国产一区二区三区久久| www久久久久久久| 日韩一级在线观看| av日韩亚洲| avove在线观看| 久久蜜桃av一区二区天堂| 91国偷自产中文字幕久久| 久久久久久网站| 日韩不卡一区| 麻豆精品国产传媒av| 欧美欧美午夜aⅴ在线观看| 国产天堂在线播放视频| 日本一区不卡| 成人午夜av在线| 中日精品一色哟哟| 国内精品400部情侣激情| 999精品色在线播放| 黄色性生活一级片| 日韩一区二区高清|