什么是seata妓湘?
seata是具有高性能钞护、易用的微服務(wù)框架下的分布式事務(wù)解決方案档痪。
傳統(tǒng)事務(wù)
傳統(tǒ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ù)問題應運而生拾徙。
seata中的三種角色
事務(wù)協(xié)調(diào)器(TC):維護全局事務(wù)和分支事務(wù)的狀態(tài),驅(qū)動全局提交或回滾感局。(seata server)
事務(wù)管理器TM:定義全局事務(wù)的范圍:開始全局事務(wù)尼啡,提交或回滾全局事務(wù)。實際開發(fā)中询微,TM大多是我們?nèi)质聞?wù)的入口崖瞭,可能與RM集成為一體。
資源管理器(RM):管理分支事務(wù)撑毛,與TC進行對話以注冊分支事務(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提交或回滾相應的XID全局事務(wù)腔呜。
5、TC驅(qū)動XID對應的全局事務(wù)下的所有分支事務(wù)再悼,以完成分支的提交或回滾核畴。
XID的傳播
全局事務(wù)XID是通過微服務(wù)的調(diào)用鏈傳播
1、fegin 調(diào)用端冲九,從rootContext中獲取xid谤草,添加header請求頭
2、feign 服務(wù)端莺奸,從header請求頭中獲取xid丑孩,綁定到rootContext中