Seata 的3個基本組成部分
事務協調器(TC):維護全局事務和分支事務的狀態,驅動全局提交或回滾。
事務管理器(TM):用於開啓全局事務、提交或者回滾全局事務,是全局事務的開啓者。
資源管理器(RM):用於分支事務上的資源管理,向TC註冊分支事務,上報分支事務的狀態,接受TC的命令來提交或者回滾分支事務。
Seata管理的分佈式事務的典型生命週期
- TM向TC請求發起一個全局事務,TC返回一個代表這個全局事務的XID。
- XID通過微服務的調用鏈傳播。
- 每個RM拿到XID後向TC發起一個分支事務,TC返回一個代表這個分支事務的XID。
- RM完成本地分支的業務,提交本地分支,並且報告給TC。
- 局事務調用鏈處理完畢,TM根據有無異常向TC發起全局事務的提交或者回滾。
- 假設某個RM本地事務失敗。該RM自身驅動本地事務回滾,並且報告給TC。
- TM檢測到了某個分支事務失敗,向TC發起全局事務回滾。
- TC給每一個RM發送消息,通知它們全部回滾。
- TC將全局事務回滾的結果發送給TM,全局事務結束。