Seata-XA模式
XA协议
描述了全局事务管理器与局部事务管理器之间的接口,目的是允许多个资源在同一事物中访问,能保证程序的ACID。(ACID跨应用生效)
使用两阶段提交
DTP模型:
AP:应用服务
RM:资源管理器,数据库
TM:事务管理器,负责分配事务的唯一标识,监控事务的执行,并负责事务的提交和回滚
XA协议的痛点,资源在整个事务过程中被锁定,直到事务完成(提交或回滚)。如果一个资源的消息在传送给TM的时候消失了,那么这个资源会被一直锁定,容易发生死锁;
XA模式与AT模式的区别
XA模式:依赖于本地数据库事务的锁定和协调,在Prepare阶段,资源管理器会锁定所有需要的资源,直到事务完成,资源锁定时间较长,适用于对一致性要求极高的场景。
资源锁定时间:XA模式中资源在整个分布式事务期间保持锁定;XA模式下第一阶段 是不提交事务的,第二阶段 决定提交或回滚,完成后才会释放锁
AT模式:回滚不依赖于本地事务,本地事务正常提交,但Seata会在本地事务中捕获所有数据变更,并将这些变更记录在undo log中。通过记录undo log来实现数据回滚,只有在提交阶段资源锁定时间短,适用于需要高并发和低延迟的微服务架构。
资源锁定时间:第一阶段完成本地事务,一旦本地事务提交,资源立即解锁,直到第二阶段全局事务管理器(Seata的事务协调器)决定回滚时,才需要根据undo log进行数据恢复,而这一过程并不需要锁定资源。