Raincat二階段提交分布式事務(wù)中間件
Raincat,強(qiáng)一致性分布式事務(wù),是基于二階段提交+本地事務(wù)補(bǔ)償機(jī)制來(lái)實(shí)現(xiàn)。原理介紹
基于java語(yǔ)言來(lái)開發(fā)(JDK1.8),支持dubbo,motan,springcloud進(jìn)行分布式事務(wù)。
因?yàn)槲募L(zhǎng),大家在拉取代碼的時(shí)候執(zhí)git命令:git config --global core.longpaths true
Features
-
框架特性
-
無(wú)縫集成spring 或 spring boot。
-
支持dubbo,motan,springcloud,等rpc框架進(jìn)行分布式事務(wù)。
-
事務(wù)發(fā)起者,參與者與協(xié)調(diào)者底層基于netty長(zhǎng)連接通信,穩(wěn)定高效。
-
協(xié)調(diào)者采用eureka做注冊(cè)中心,支持集群模式。
-
采用Aspect AOP 切面思想與Spring無(wú)縫集成。
-
配置簡(jiǎn)單,集成簡(jiǎn)單,源碼簡(jiǎn)潔,穩(wěn)定性高,已在生產(chǎn)環(huán)境使用。
-
內(nèi)置經(jīng)典的分布式事務(wù)場(chǎng)景demo工程,并有swagger-ui可視化界面可以快速體驗(yàn)。
-
-
事務(wù)角色
-
事務(wù)發(fā)起者(可理解為消費(fèi)者 如:dubbo的消費(fèi)者,springcloud的調(diào)用方),發(fā)起分布式事務(wù)
-
事務(wù)參與者(可理解為提供者 如:dubbo的提供者,springcloud的rest服務(wù)提供者),參與事務(wù)發(fā)起者的事務(wù)
-
事務(wù)協(xié)調(diào)者(tx-manager),協(xié)調(diào)分布式事務(wù)的提交,回滾等。
-
-
技術(shù)方案
-
協(xié)調(diào)者(tx-manager)采用eureka作為注冊(cè)中心,集群配置,達(dá)到服務(wù)的高可用,采用redis集群來(lái)分布式存儲(chǔ)事務(wù)數(shù)據(jù), springboot 提供rest服務(wù),采用netty與參與者,發(fā)起者進(jìn)行長(zhǎng)連接通信。
-
發(fā)起者與協(xié)調(diào)者,采用Aspect AOP 切面思想,SPI,多線程,異步回調(diào),線程池,netty通信等技術(shù)。
-
-
SPI擴(kuò)展
- 本地事務(wù)恢復(fù),支持redis,mogondb,zookeeper,file,mysql等關(guān)系型數(shù)據(jù)庫(kù)
- 本地事務(wù)序列化保存,支持java,hessian,kryo,protostuff
- netty通信序列化方式,支持 hessian,kryo,protostuff
Prerequisite
-
JDK 1.8+
-
Maven 3.2.x
-
Git
-
RPC framework dubbo or motan or springcloud。
架構(gòu)設(shè)計(jì)
-
架構(gòu)設(shè)計(jì)圖 :
-
流程圖 :
視頻源碼分析
環(huán)境搭建
啟動(dòng)過(guò)程
事務(wù)提交
回滾恢復(fù)
管理后臺(tái)
Support
-
如有任何問(wèn)題歡迎加入QQ群進(jìn)行討論
-
微信公眾號(hào)
Contribution
