分布式事务方案(XA 2PC TCC Seata) - 知乎 (zhihu.com)
有两种方案:
一种是保证强一致性,在数据库层实现XA两阶段提交,这种方案缺点是占有锁的时间太长,影响并发,好处是数据强一致性,不会出现一段时间数据不一致的问题,生产中用的比较少。
另一种是base理论实现柔性事务,思想是把管理事务XA的操作,从数据库提到了业务层自己实现,然后通过某种补偿方法来应对回滚的情况,比如seata的AT模式,就是通过每个分支事务的库都维护一个undolog表,当回滚的时候就去读取unodolog表的操作,进行反向操作实现的。这种好处就是不会锁定数据,分支事务执行完就提交了,回滚的时候再提交补偿方法的事务,让数据恢复就行了,并发性高,能保证最终一致性。缺点是可能会出现短期数据不一致的问题。