1.AT模式
AT模式是seata基于2pc原理,设计的一种应用层两阶段提交分布式事务方案。
1.1.前提
- 基于支持本地 ACID 事务的关系型数据库。
- Java 应用,通过 JDBC 访问数据库。
提示:就是参与事务处理的服务都用关系数据库,且都是java,才能使用AT模式
1.2.整体机制
AT模式,是用两阶段提交协议的演变而来:
- 一阶段:业务数据和回滚日志记录在同一个本地事务中提交,释放本地锁和连接资源。
- 二阶段:
提交异步化,非常快速地完成。
回滚通过一阶段的回滚日志进行反向补偿。
AT模式的原理是:在一个分布式事务中,每个服务实例都会记录下该事务的操作日志,并将该操作作为一个补偿操作存储在日志中,如果在后续操作中发现事务出现异常,Seata会将之前执行的操作回滚,并执行相应的补偿操作,从而保证事务的原子性。
2.Seata 4种事务模式对比
模式 | 优点 | 缺点 |
---|---|---|
AT | 原理简单,易于使用,支持各种存储类型,适用于业务较简单的场景 | 存在性能瓶颈,存在悬挂事务问题 |
TCC | 拥有更高的灵活性,支持更复杂的业务场景,提供了更高的可靠性和一致性 | 对业务代码有侵入性,实现较为复杂 |
Saga | 适合长事务,能够处理更加复杂的业务场景,支持异步补偿,对业务代码侵入性较小 | 状态机的设计较为复杂,对开发人员的要求较高 |
XA | 能够支持跨多个数据库的分布式事务,提供了较高的数据一致性保障 | 性能较差,不支持所有数据库类型 |