TX-LCN 分布式事务解决方案

一、LCN (Lock Confirm Notify),分布式解决方案之一,主要是二阶段提交协议的落地方案

二、源码地址 官网地址

三、模式

  1、LCN(Lock Confirm Notify):主要针对支持事务性的数据库,一阶段锁住本地资源,二阶段提交或回滚,提交过程中失败的,通知

  2、TCC(Try Confirm Cancel):主要针对非事务性的数据库,一阶段尝试执行,二阶段提交或回滚

  3、TXC: TXC模式命名来源于淘宝,实现原理是在执行SQL之前,先查询SQL的影响数据,然后保存执行的SQL快照信息和创建锁。当需要回滚的时候就采用这些记录数据回滚数据库,目前锁实现依赖redis分布式锁控制

 四、示例代码

五、原理:虽然源码没有看得太仔细,但大致的套路是这样的:

  • 拦截了getConnection方法,返回一个代理的connection,connection覆盖了close和rollback方法,使得提交和回滚无效
  • 拦截lcn、tcc、txc等事务注解,从第一个事务开始,依次执行并注册到分布式事务管理器中,根据所有事务的执行情况决定是提交还是回滚
  • 缺点:我自己认为的,就是要占用connection资源和锁住本地资源(比如数据库如果是微服务自身的,则其涉及资源的部分也将被锁住);优点:lcn的模式代码侵入性低(tcc还是比较麻烦的)
posted @ 2020-10-07 11:27  gabin  阅读(589)  评论(0编辑  收藏  举报