README.md 4.5 KB
Newer Older
W
4.2.0  
wangliang 已提交
1
# LCN分布式事务框架v4.0 
W
commit  
wangliang 已提交
2

W
update  
wangliang 已提交
3
  "LCN并不生产事务,LCN只是本地事务的协调者"
L
lorne 已提交
4 5 6

 > 5.0.0.beta 版本发布 见5.0.0.beta 分支   

W
wangliang 已提交
7

L
lorne 已提交
8 9
## 框架介绍   

W
update  
wangliang 已提交
10
  LCN分布式事务框架的核心功能是对本地事务的协调控制,框架本身并不创建事务,只是对本地事务做协调控制。因此该框架与其他第三方的框架兼容性强,支持所有的关系型数据库事务,支持多数据源,支持与第三方数据库框架一块使用(例如 sharding-jdbc),在使用框架的时候只需要添加分布式事务的注解即可,对业务的侵入性低。LCN框架主要是为微服务框架提供分布式事务的支持,在微服务框架上做了进一步的事务机制优化,在一些负载场景上LCN事务机制要比本地事务机制的性能更好,4.0以后框架开方了插件机制可以让更多的第三方框架支持进来。
L
lorne 已提交
11 12


W
readme  
wangliang 已提交
13
## 官方网址
W
wangliang 已提交
14

L
lorne 已提交
15
[https://www.txlcn.org](https://www.txlcn.org)
W
readme  
wangliang 已提交
16 17 18 19 20


## 框架特点

1. 支持各种基于spring的db框架
W
wangliang 已提交
21
2. 兼容SpringCloud、Dubbo、motan
W
readme  
wangliang 已提交
22 23
3. 使用简单,低依赖,代码完全开源
4. 基于切面的强一致性事务框架
W
wangliang 已提交
24
5. 高可用,模块可以依赖RPC模块做集群化,TxManager也可以做集群化
W
readme  
wangliang 已提交
25 26
6. 支持本地事务和分布式事务共存
7. 支持事务补偿机制,增加事务补偿决策提醒
W
wangliang 已提交
27
8. 添加插件拓展机制
W
readme  
wangliang 已提交
28 29 30 31


## 原理介绍

L
lorne 已提交
32
[原理介绍](https://github.com/codingapi/tx-lcn/wiki)  [视频讲解](https://www.txlcn.org/v4/index.html)
W
readme  
wangliang 已提交
33 34 35 36 37 38 39

## 目录说明

transaction-dubbo LCN dubbo rpc框架扩展支持

transaction-springcloud LCN springcloud rpc框架扩展支持

W
wangliang 已提交
40 41
transaction-motan LCN motan rpc框架扩展支持

W
readme  
wangliang 已提交
42 43 44 45 46 47 48 49 50 51
tx-client 是LCN核心tx模块端控制框架

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

tx-plugins-db 是LCN 对关系型数据库的插件支持


## 使用说明

分布式事务发起方:
W
readme  
wangliang 已提交
52

W
wangliang 已提交
53 54
```

W
readme  
wangliang 已提交
55
    @Override
W
wangliang 已提交
56
    @TxTransaction(isStart=true)
W
readme  
wangliang 已提交
57 58 59 60 61 62 63 64 65 66 67 68 69
    @Transactional
    public boolean hello() {
        //本地调用
        testDao.save();
        //远程调用方
        boolean res =  test2Service.test();
        //模拟异常
        int v = 100/0;
        return true;
    }
    
    
```
W
wangliang 已提交
70

W
readme  
wangliang 已提交
71
分布式事务被调用方(test2Service的业务实现类)
W
readme  
wangliang 已提交
72 73
```

W
readme  
wangliang 已提交
74 75
    @Override
    @Transactional
W
wangliang 已提交
76
    @TxTransaction
W
readme  
wangliang 已提交
77 78 79 80 81 82 83 84 85
    public boolean test() {
        //本地调用
        testDao.save();
        return true;
    }

```

如上代码执行完成以后两个模块都将回滚事务。
W
readme  
wangliang 已提交
86

W
update  
wangliang 已提交
87
说明:在使用LCN分布式事务时,只需要将事务的开始方法添加`@TxTransaction(isStart=true)`注解即可,在参与方添加`@TxTransaction`或者实现`ITxTransaction`接口即可。详细见demo教程
W
readme  
wangliang 已提交
88

L
lorne 已提交
89 90 91 92
## 关于@TxTransaction 使用说明

  @TxTransaction注解是分布式事务的标示。
  
W
update  
wangliang 已提交
93
  若存在业务方法:a->b b->c b->d,那么开启分布式事务注解的话,需要在各个模块方法上添加@TxTransaction即可。
L
lorne 已提交
94
  
W
wangliang 已提交
95
```
W
wangliang 已提交
96
    @TxTransaction(isStart=true)
L
lorne 已提交
97 98 99 100
    @Transactional
    public void a(){
        b();
    }
W
wangliang 已提交
101 102
    
    @TxTransaction
L
lorne 已提交
103 104 105 106
    public void b(){
        c();
        d();
    }
W
wangliang 已提交
107 108
    
    @TxTransaction
L
lorne 已提交
109
    public void c(){}
W
wangliang 已提交
110 111
    
    @TxTransaction
L
lorne 已提交
112 113
    public void d(){}
```
W
readme  
wangliang 已提交
114

W
wangliang 已提交
115 116
## maven 中心库地址

117

W
wangliang 已提交
118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153
```
<dependency>
    <groupId>com.codingapi</groupId>
    <artifactId>tx-client</artifactId>
    <version>${lcn.last.version}</version>
</dependency>


<dependency>
    <groupId>com.codingapi</groupId>
    <artifactId>tx-plugins-db</artifactId>
    <version>${lcn.last.version}</version>
</dependency>


<dependency>
    <groupId>com.codingapi</groupId>
    <artifactId>transaction-dubbo</artifactId>
    <version>${lcn.last.version}</version>
</dependency>      

<dependency>
    <groupId>com.codingapi</groupId>
    <artifactId>transaction-motan</artifactId>
    <version>${lcn.last.version}</version>
</dependency>  


<dependency>
    <groupId>com.codingapi</groupId>
    <artifactId>transaction-springcloud</artifactId>
    <version>${lcn.last.version}</version>
</dependency>    
        
```

154 155 156 157
依赖gradle等形式,见中心库   

[http://mvnrepository.com/search?q=codingapi](http://mvnrepository.com/search?q=codingapi)

W
wangliang 已提交
158

W
readme  
wangliang 已提交
159
## demo演示教程
W
readme  
wangliang 已提交
160

W
readme  
wangliang 已提交
161
每个demo下有区分为 jdbc/hibernate/mybatis不同框架的版本demo
W
readme  
wangliang 已提交
162

W
readme  
wangliang 已提交
163
[springcloud版本](https://github.com/codingapi/springcloud-lcn-demo)
W
readme  
wangliang 已提交
164

W
readme  
wangliang 已提交
165
[dubbo版本](https://github.com/codingapi/dubbo-lcn-demo)
W
readme  
wangliang 已提交
166

L
lorne 已提交
167
[motan版本](https://gitee.com/zfvipCase/motan-lcn-demo)
W
readme  
wangliang 已提交
168

L
lorne 已提交
169 170
[txc模式](https://github.com/caisirius/test-lcn-dubbo)

L
lorne 已提交
171

L
lorne 已提交
172
技术交流群:554855843(已满) 970071379(未满)