zjuwangleicn 2020-09-04
1、基于xa的2pc、 3pc: dbms实现的分布式事务,在整个分布式事务的执行过程中,都会锁表(相关的),效率比较低(一个请求进来,可能会锁多个数据库的表),但是保证强一致性。
2、TCC:需要改造业务逻辑,手动实现 try的锁定的功能。对业务侵入很强。
3、saga:默认执行成功,在需要的时候,再回调cancel。已经提交的事务,不保证隔离性。
4、seata:对于update insert delete自动生成回滚的sql,需要时进行回滚,但是不保证数据的强一致性,回滚时会导致脏读(回滚和提交是2个本地的事务)
5、lcn:发起方最后成功,触发各个阶段的真正提交。不会脏读,性能介于seata和2阶段之间。但是发起方挂了,会导致 数据不一致(可能性小,而且真的是这种情况,也算是可以接受)