我们从以下几个方面来对比四种实现:
一致性:能否保证事务的一致性?强一致还是最终一致?
隔离性:事务之间的隔离性如何?
代码侵入:是否需要对业务代码改造?
性能:有无性能损耗?
场景:常见的业务场景
无代码侵入 基于事务 也就是关系型数据库
XA因为从到到尾都在互相等待 所以就算一致性隔离性非常高
AT就是在XA的基础上 修改了XA全部等待的模式 加入了数据快照的模式 这样的话 就会比XA快很多 但是就是弱一致
有代码侵入 自己写 不一定要基于关系型数据库
TCC就是资源预留空间 对于空间操作 性能非常好 因为这个不需要考虑其他事务 只需要对预留的空间进行操作 缺点要自己写
SAGA就是只有在最后才能一致 因为分成了很多角色 也就是说当我要用TCC但是判断的逻辑太长 这个时候i就用到SAGA