时间:2025-02-23 17:19-18:19
地点:广州图书馆
人物:我
天气:晴 (18度~26度)
位置:7楼0063列A面04架02层
TC(事务协调者):负责定义全局事务和分支事务的状态,并驱动全局事务的提交和回滚。
TM(事务管理器):负责定义全局事物的范围,并负责开始一个全局事务、提交或回滚一个全局事务。事务管理器与事务协调者进行交互,控制全局事务的生命周期。
RM(资源管理器):负责管理分支事务所使用的资源,与事务协调者进行分支事务的注册和状态上报,并驱动分支事务的提交或回滚
Seata的事务模式:
Seata提供了XA、AT、TCC和SAGA四种事务模式。
对比项 | XA | AT | TCC | SAGA |
一致性 | 强一致性 | 弱一致性 | 弱一致性 | 最终一致性 |
隔离性 | 完全隔离 | 基于全局锁隔离 | 基于资源预留隔离 | 无隔离性 |
代码侵入 | 无 | 无 | 有,要编写三个接口 | 有,要编写状态机和补偿业务 |
性能 | 差 | 好 | 非常好 | 非常好 |
适用场景 | 对一致性、隔离性有高要求的事务场景 | 基于关系数据库的大多数分布式事务场景 | 对性能要求较高的事务,场景:有非关系数据库参与的事务场景 | 业务流程长,业务流程多,参与者包含其他公司或遗留系统服务,无法提供TCC模式要求的三个接口的事务场景 |
XA:每一次执行都会阻塞本地的事务,直到所有分支事务都成功或者有失败时,才会提交或者回滚事务
AT:不会阻塞本地事务,分支事务执行完就会提交事务,当出现失败的事务时,会通过日志进行反向补偿(最常用)
TCC:T(尝试)、C(确认)、C(取消)需要手动编写代码实现
SAGA:可通过消息队列实现最终一致性(最不常用)
参考文章:
2025-02-22~ 02-23 深圳聚餐: