几种分布式事务技术的比较
1、基于xa的2pc、 3pc: dbms实现的分布式事务,在整个分布式事务的执行过程中,都会锁表(相关的),效率比较低(一个请求进来,可能会锁多个数据库的表),但是保证强一致性。
2、TCC:需要改造业务逻辑,手动实现 try的锁定的功能。对业务侵入很强。
3、saga:默认执行成功,在需要的时候,再回调cancel。已经提交的事务,不保证隔离性。
4、seata:对于update insert delete自动生成回滚的sql,需要时进行回滚,但是不保证数据的强一致性,回滚时会导致脏读(回滚和提交是2个本地的事务)
5、lcn:发起方最后成功,触发各个阶段的真正提交。不会脏读,性能介于seata和2阶段之间。但是发起方挂了,会导致 数据不一致(可能性小,而且真的是这种情况,也算是可以接受)
- seata和lcn大致的实现思路是一致的,但是回滚的机制不一样。
- lcn是采取代理数据源的模式,再根据发起方执行本地事务的结果进行回滚或者提交
- seata采取的是根据undo_log日志表,进行逆向生成sql语句,来解决回滚
- lcn能够保证强一致性,但可能发生死锁的现象
- seata能保证最终一致性,但可能造成脏读
相关推荐
LeeLuffy 2020-10-16
loviezhang 2020-08-08
粗茶淡饭 2020-06-25
花落花开春去秋来 2020-06-20
wenjieyatou 2020-06-09
middleware0 2020-06-09
韩学敏 2020-06-08
CharlesYooSky 2020-06-06
isHooky 2020-05-30
打不死的小强 2020-07-03
夙梦流尘 2020-06-28
loviezhang 2020-06-16
wqbala 2020-06-04
zhangll00 2020-05-11
wqbala 2020-05-05
langyue 2020-05-03