Skip to content

j2eeliao/tx-lcn

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LCN分布式事务框架

框架特点

  1. 支持各种基于spring的db框架
  2. 兼容springcloud、dubbo
  3. 使用简单,低依赖,代码完全开源
  4. 基于切面的强一致性事务框架
  5. 高可用,模块可以依赖dubbo或springcloud的集群方式做集群化,TxManager也可以做集群化
  6. 支持本地事务和分布式事务共存
  7. 事务补偿机制,服务故障或挂机再启动时可恢复事务

注意事项

  1. 同一个模块单元下的事务是嵌套的。
  2. 不同事务模块下的事务是独立的。

备注:框架在多个业务模块下操作更新同一个库下的同一张表下的同一条时,将会出现锁表的情况,会导致分布式事务异常,数据会丧失一致性。

方案: 希望开发者在设计模块时避免出现多模块更新操作(insert update delete)同一条数据的情况。

  1. 禁止重名的bean对象。 事务的补偿机制是基于java反射的方式重新执行一次需要补偿的业务。因此执行的时候需要获取到业务的service对象,LCN是基于spring的ApplicationContent的getBean方法获取bean的对象的。因此不允许出现重名对象。

使用示例

分布式事务发起方:

    @Override
    @TxTransaction
    public boolean hello() {
        //本地调用
        testDao.save();
        //远程调用方
        boolean res =  test2Service.test();
        //模拟异常
        int v = 100/0;
        return true;
    }
    

分布式事务被调用方(test2Service的业务实现类)

    @Override
    public boolean test() {
        //本地调用
        testDao.save();
        return true;
    }

如上代码执行完成以后两个模块都将回滚事务。

说明:在使用LCN分布式事务时,只需要将事务的开始方法添加@TxTransaction注解即可。详细见demo教程

关于@TxTransaction 使用说明

@TxTransaction注解与@Transactional注解类似。添加上@Transactional就支持事务了,同样的道理添加@TxTransaction就支持分布式事务了。

若存在业务方法:a-b b-c b-d,那么开启本地事务只需要在a方法上添加@Transactional即可。

   
    @Transactional
    public void a(){
        b();
    }

    public void b(){
        c();
        d();
    }

    public void c(){}

    public void d(){}

若存在业务模块:a-b b-c b-d,那么开启分布式事务只需要在a方法上添加@TxTransaction即可。

    @TxTransaction
    public void a(){
        b();
    }

    public void b(){
        c();
        d();
    }

    public void c(){}

    public void d(){}

会用@Transactional就会用@TxTransaction

目录说明

lorne-tx-core 是LCN分布式事务框架的切面核心类库

dubbo-transaction 是LCN dubbo分布式事务框架

springcloud-transaction 是LCN springcloud分布式事务框架

tx-manager 是LCN 分布式事务协调器

关于框架的设计原理

TxManager

demo 说明

demo里包含jdbc\hibernate\mybatis版本的demo

dubbo版本的demo dubbo-demo

springcloud版本的demo springcloud-demo

技术交流群:554855843

About

LCN 分布式事务框架

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 92.5%
  • Shell 3.4%
  • Batchfile 2.7%
  • HTML 1.4%