什么是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ù),以完成分支的提交或回滾。

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