“LCN并不生产事务,LCN只是本地事务的搬运工”
LCN分布式事务框架是一款事务协调性的框架,框架本身并不创建事务,只是对本地事务做协调控制。因此该框架与其他第三方的框架兼容性强,支持所有的关系型数据库事务,支持多数据源,支持与第三方数据库框架一块使用(例如 sharding- jdbc),在使用框架的时候只需要添加分布式事务的注解即可,对业务的侵入性低。LCN框架主要是为微服务框架提供分布式事务的支持,在微服务框架上做了进一步的事务机制优化,在一些负载场景上LCN事务机制要比本地事务机制的性能更好,4.0以后框架开方了插件机制可以让更多的第三方框架支持进来。
https://www.txlcn.org
原理介绍 视频讲解
transaction-dubbo LCN dubbo rpc框架扩展支持
transaction-springcloud LCN springcloud rpc框架扩展支持
transaction-motan LCN motan rpc框架扩展支持
tx-client 是LCN核心tx模块端控制框架
tx-manager 是LCN 分布式事务协调器
tx-plugins-db 是LCN 对关系型数据库的插件支持
tx-plugins-nodb 是LCN 对于无数据库模块的插件支持
tx-plugins-redis 是LCN 对于redis模块的插件支持(功能暂未实现)
分布式事务发起方:
@Override @TxTransaction @Transactional public boolean hello() { //本地调用 testDao.save(); //远程调用方 boolean res = test2Service.test(); //模拟异常 int v = 100/0; return true; }
分布式事务被调用方(test2Service的业务实现类)
@Override @Transactional public boolean test() { //本地调用 testDao.save(); return true; }
如上代码执行完成以后两个模块都将回滚事务。
说明:在使用LCN分布式事务时,只需要将事务的开始方法添加@TxTransaction注解即可。详细见demo教程
@TxTransaction
@TxTransaction注解是分布式事务的标示。
若存在业务方法:a->b b->c b->d,那么开启分布式事务注解的话,只需要在a方法上添加@TxTransaction即可。
@TxTransaction @Transactional public void a(){ b(); } public void b(){ c(); d(); } public void c(){} public void d(){}
com.codingapi tx-client ${lcn.last.version} com.codingapi tx-plugins-db ${lcn.last.version} com.codingapi tx-plugins-nodb ${lcn.last.version} com.codingapi transaction-dubbo ${lcn.last.version} com.codingapi transaction-motan ${lcn.last.version} com.codingapi transaction-springcloud ${lcn.last.version}
依赖gradle等形式,见中心库
http://mvnrepository.com/search?q=codingapi
每个demo下有区分为 jdbc/hibernate/mybatis不同框架的版本demo
springcloud版本
dubbo版本
motan版本
技术交流群:554855843