Skip to content

面试速答(先看这里)

**一句话结论:**Seata中的AT模式其实和2PC很像,都是把一个分布式事务分成了2个阶段,那他们之间有什么区别呢?

60秒标准回答:

XA是一个典型的分布式事务解决方案,是一个强一致性模型,基于XA的2PC和3PC一直都是业内比较成熟的分布式方案,但是,他们都存在着各种各样的问题

Seata中的AT模式其实和2PC很像,都是把一个分布式事务分成了2个阶段,那他们之间有什么区别呢?

主要区别就是在一阶段和二阶段做的事情上

**答题顺序:**结论 → 原理/机制 → 关键流程 → 场景与取舍 → 易错点

回答主线:

  • **要点1:**XA是一个典型的分布式事务解决方案,是一个强一致性模型,基于XA的2PC和3PC一直都是业内比较成熟的分布式方案,但是,他们都存在着各种各样的问题。
  • **要点2:**主要区别就是在一阶段和二阶段做的事情上。
  • **要点3:**所以,他们的主要区别就在于一阶段是否直接提交事务,Seata的AT模式中,为了提升性能,直接提交了事务,在二阶段,需要回滚的话再执行回滚。
  • **要点4:**所以,AT的性能是明显高于XA的,因为在一阶段已经执行了实际的数据库操作,并不需要做资源的占用和锁定,而二阶段也只是在失败的情况下再执行回滚,所以性能相对较高。
  • **要点5:**而XA这种模式由于需要锁定资源直到二阶段结束,对数据库性能有较大影响,尤其在高并发环境下。

**记忆锚点:**Seata → 各个分支事务 → 确保了全局事务的一致性 → 一个典型的分布式事务 → 都是把一个分布式事务 → 果协调器决定提交事务

关键取舍:

  • 各个分支事务正常执行并提交,并记录日志,这些日志可以用来在二阶段进行回滚 各个分支事务执行预提交操作,数据库锁定资源但不实际提交。
  • 所以,他们的主要区别就在于一阶段是否直接提交事务,Seata的AT模式中,为了提升性能,直接提交了事务,在二阶段,需要回滚的话再执行回滚。
  • 而XA中,一阶段是只做资源占用,二阶段在进行回滚或者提交。

易错提醒:

  • 所以,AT的性能是明显高于XA的,因为在一阶段已经执行了实际的数据库操作,并不需要做资源的占用和锁定,而二阶段也只是在失败的情况下再执行回滚,所以性能相对较高。

加分表达:

  • 如果需要回滚,系统根据UNDO日志来恢复到一阶段操作前的状态。
  • 如果需要提交,直接结束即可,因为一阶段已经完成实际的数据库操作。
  • 如果协调器决定提交事务,所有参与者提交预提交的操作。

追问准备:

  • 围绕「Seata」:底层原理是什么?使用时有哪些边界和常见坑?
  • 围绕「各个分支事务」:底层原理是什么?使用时有哪些边界和常见坑?
  • 围绕「确保了全局事务的一致性」:底层原理是什么?使用时有哪些边界和常见坑?
  • 如果线上出现异常,你会如何定位、验证并规避?

典型回答 ​

XA是一个典型的分布式事务解决方案,是一个强一致性模型,基于XA的2PC和3PC一直都是业内比较成熟的分布式方案,但是,他们都存在着各种各样的问题。

Seata中的AT模式其实和2PC很像,都是把一个分布式事务分成了2个阶段,那他们之间有什么区别呢?

主要区别就是在一阶段和二阶段做的事情上。

ATXA
1阶段各个分支事务正常执行并提交,并记录日志,这些日志可以用来在二阶段进行回滚各个分支事务执行预提交操作,数据库锁定资源但不实际提交。
2阶段如果需要回滚,系统根据UNDO日志来恢复到一阶段操作前的状态。如果需要提交,直接结束即可,因为一阶段已经完成实际的数据库操作。如果协调器决定提交事务,所有参与者提交预提交的操作。如果决定回滚,则所有参与者撤销预提交的操作。

所以,他们的主要区别就在于一阶段是否直接提交事务,Seata的AT模式中,为了提升性能,直接提交了事务,在二阶段,需要回滚的话再执行回滚。而XA中,一阶段是只做资源占用,二阶段在进行回滚或者提交。

所以,AT的性能是明显高于XA的,因为在一阶段已经执行了实际的数据库操作,并不需要做资源的占用和锁定,而二阶段也只是在失败的情况下再执行回滚,所以性能相对较高。

而XA这种模式由于需要锁定资源直到二阶段结束,对数据库性能有较大影响,尤其在高并发环境下。

而在一致性方面,XA确实要比AT好的,因为在一阶段所有参与者都只进行预提交操作,二阶段再根据协调器的决定进行实际提交或回滚,确保了全局事务的一致性。

而AT这种模式,一阶段是做了数据提交的,提交后就可能被其他事物看到,那么就会出现事务被提前看到的情况。所以会存在短暂的不一致。

所以总结一下:

ATXA
性能高低
一致性最终一致性强一致性
适用场景高吞吐量场景高一致性要求场景,如资金、金融
复杂度借助Seata无侵入性实现高