seata學(xué)習(xí)筆記(二)——原理分析

什么是seata?

seata是具有高性能、易用的微服務(wù)框架下的分布式事務(wù)解決方案。

傳統(tǒng)事務(wù)

傳統(tǒng)單機(jī)應(yīng)用程序中,三個模塊共用一個本地數(shù)據(jù)庫,事務(wù)的原子性可通過數(shù)據(jù)庫本身的事務(wù)支持。


微服務(wù)框架事務(wù)問題?

微服務(wù)框架下,一個業(yè)務(wù)邏輯可能涉及多個業(yè)務(wù)模塊,不同的模塊有自己的數(shù)據(jù)庫,單個業(yè)務(wù)模塊的事務(wù)可通過數(shù)據(jù)庫事務(wù)保證,但是作為一個整體又將如何保證事務(wù)的一致性呢?


seata如何解決分布式事務(wù)問題

seata就是為了解決上述分布是事務(wù)問題應(yīng)運而生。


seata中的三種角色

事務(wù)協(xié)調(diào)器(TC):維護(hù)全局事務(wù)和分支事務(wù)的狀態(tài),驅(qū)動全局提交或回滾。(seata server)
事務(wù)管理器TM:定義全局事務(wù)的范圍:開始全局事務(wù),提交或回滾全局事務(wù)。實際開發(fā)中,TM大多是我們?nèi)质聞?wù)的入口,可能與RM集成為一體。
資源管理器(RM):管理分支事務(wù),與TC進(jìn)行對話以注冊分支事務(wù)并報告分支事務(wù)的狀態(tài),并驅(qū)動分支事務(wù)的提交或回滾。

seata 事務(wù)生命周期管理

1、TM請求TC開啟全局事務(wù)。TC生成代表全局事務(wù)XID。
2、XID通過微服務(wù)的調(diào)用鏈傳播。
3、RM將本地事務(wù)向TC注冊為XID全局事務(wù)的分支事務(wù)。
4、TM要求TC提交或回滾相應(yīng)的XID全局事務(wù)。
5、TC驅(qū)動XID對應(yīng)的全局事務(wù)下的所有分支事務(wù),以完成分支的提交或回滾。


分布式事務(wù)提交流程

XID的傳播

全局事務(wù)XID是通過微服務(wù)的調(diào)用鏈傳播
1、fegin 調(diào)用端,從rootContext中獲取xid,添加header請求頭
2、feign 服務(wù)端,從header請求頭中獲取xid,綁定到rootContext中

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、概述 在微服務(wù)架構(gòu)下,雖然我們會盡量避免分布式事務(wù),但是只要業(yè)務(wù)復(fù)雜的情況下這是一個繞不開的問題,如何保證業(yè)務(wù)...
    皮多堡閱讀 908評論 0 6
  • 微信公眾號「后端進(jìn)階」,專注后端技術(shù)分享:Java、Golang、WEB框架、分布式中間件、服務(wù)治理等等。 在微服...
    后端進(jìn)階閱讀 1,237評論 1 5
  • Seata框架是一個業(yè)務(wù)層的XA(兩階段提交)解決方案。在理解Seata分布式事務(wù)機(jī)制前,我們先回顧一下數(shù)據(jù)庫層面...
    伊凡的一天閱讀 103,824評論 18 92
  • 表情是什么,我認(rèn)為表情就是表現(xiàn)出來的情緒。表情可以傳達(dá)很多信息。高興了當(dāng)然就笑了,難過就哭了。兩者是相互影響密不可...
    Persistenc_6aea閱讀 129,890評論 2 7
  • 16宿命:用概率思維提高你的勝算 以前的我是風(fēng)險厭惡者,不喜歡去冒險,但是人生放棄了冒險,也就放棄了無數(shù)的可能。 ...
    yichen大刀閱讀 8,164評論 0 4

友情鏈接更多精彩內(nèi)容