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