tx-lcnLCN 分布式事務
LCN分布式事務
"LCN并不生產(chǎn)事務,LCN只是本地事務的搬運工"
框架介紹
LCN分布式事務框架是一款事務協(xié)調(diào)性的框架,框架本身并不創(chuàng)建事務,只是對本地事務做協(xié)調(diào)控制。因此該框架與其他第三方的框架兼容性強,支持所有的關系型數(shù)據(jù)庫事務,支持多數(shù)據(jù)源,支持與第三方數(shù)據(jù)庫框架一塊使用(例如 sharding-jdbc),在使用框架的時候只需要添加分布式事務的注解即可,對業(yè)務的侵入性低。LCN框架主要是為微服務框架提供分布式事務的支持,在微服務框架上做了進一步的事務機制優(yōu)化,在一些負載場景上LCN事務機制要比本地事務機制的性能更好,4.0以后框架開方了插件機制可以讓更多的第三方框架支持進來。
官方網(wǎng)址
框架特點
- 支持各種基于spring的db框架
- 兼容SpringCloud、Dubbo、motan
- 使用簡單,低依賴,代碼完全開源
- 基于切面的強一致性事務框架
- 高可用,模塊可以依賴RPC模塊做集群化,TxManager也可以做集群化
- 支持本地事務和分布式事務共存
- 支持事務補償機制,增加事務補償決策提醒
- 添加插件拓展機制
原理介紹
目錄說明
transaction-dubbo LCN dubbo rpc框架擴展支持
transaction-springcloud LCN springcloud rpc框架擴展支持
transaction-motan LCN motan rpc框架擴展支持
tx-client 是LCN核心tx模塊端控制框架
tx-manager 是LCN 分布式事務協(xié)調(diào)器
tx-plugins-db 是LCN 對關系型數(shù)據(jù)庫的插件支持
tx-plugins-nodb 是LCN 對于無數(shù)據(jù)庫模塊的插件支持
tx-plugins-redis 是LCN 對于redis模塊的插件支持(功能暫未實現(xiàn))
使用說明
分布式事務發(fā)起方:
@Override
@TxTransaction
@Transactional
public boolean hello() {
//本地調(diào)用
testDao.save();
//遠程調(diào)用方
boolean res = test2Service.test();
//模擬異常
int v = 100/0;
return true;
}
分布式事務被調(diào)用方(test2Service的業(yè)務實現(xiàn)類)
@Override
@Transactional
public boolean test() {
//本地調(diào)用
testDao.save();
return true;
}
如上代碼執(zhí)行完成以后兩個模塊都將回滾事務。
說明:在使用LCN分布式事務時,只需要將事務的開始方法添加@TxTransaction注解即可。詳細見demo教程
關于@TxTransaction 使用說明
@TxTransaction注解是分布式事務的標示。
若存在業(yè)務方法: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(){}
maven 中心庫地址
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演示教程
每個demo下有區(qū)分為 jdbc/hibernate/mybatis不同框架的版本demo
技術交流群:554855843
