1. Seata中的几个角色

  • TM(Transaction Manager):全局事务管理器(事务的入口)
  • TC(Transaction Coordinator):事务协调器
  • RM(Resource Manager):本地事务管理器

image.png
f2be74d6023eb27375dd4f8559096e4.png

2. AT模式的有点和缺点:

AT模式是全自动的,我们只需要增加几个注解就可以完成,seata会把我们更新的每一条记录的更新之前和更新之后的信息保存在数据库里,当我们需要回滚事务的时候,seata会根据更新之前的记录信息,帮我们做一个数据的反向操作(比如:原来是把age从2 更新为3,那么回滚的时候,seata会把age从3更新回2),AT模式的缺点是事务中只能是对数据库的操作,可以被自动回滚,如果有针对于redis的操作,AT模式无法自动回滚 undo_log

3.TCC模式的优点和缺点

TCC模式下,用户的代码写起来比较复杂,要自己实现三个接口:Try,Confirm,Cancel,其中try是预留资源阶段,其实也是在真正的更新数据库的信息,如果每一个本地事务try都成功,那么seata TC会通知每一个RM(参考上面的图)执行Confirm方法。如果有任何一个失败,那么Seata TC会通知每一个RM执行Cancel操作;TCC的优点是用户可以完全控制,即使在这个过程中需要回滚redis的操作,也可以通过写代码来完成。但是实现起来比较复杂,用户要自己考虑空回滚,或者空的提交这些情况。