MCPcopy Index your code
hub / github.com/dromara/raincat

github.com/dromara/raincat @2.0.1

Chat with this repo
repository ↗ · DeepWiki ↗ · release 2.0.1 ↗ · + Follow
1,673 symbols 5,031 edges 272 files 540 documented · 32%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Raincat

Codacy Badge Total lines License Maven Central Javadocs Build Status QQ群 强一致性分布式事务,是基于二阶段提交+本地事务补偿机制来实现。原理介绍

基于java语言来开发(JDK1.8),支持dubbo,motan,springcloud进行分布式事务。

# Features

  • 框架特性

    • 无缝集成spring 或 spring boot。

    • 支持dubbo,motan,springcloud,等rpc框架进行分布式事务。

    • 事务发起者,参与者与协调者底层基于netty长连接通信,稳定高效。

    • 协调者采用eureka做注册中心,支持集群模式。

    • 采用Aspect AOP 切面思想与Spring无缝集成。

    • 配置简单,集成简单,源码简洁,稳定性高,已在生产环境使用。

    • 内置经典的分布式事务场景demo工程,并有swagger-ui可视化界面可以快速体验。

  • 事务角色

  • 事务发起者(可理解为消费者 如:dubbo的消费者,springcloud的调用方),发起分布式事务

  • 事务参与者(可理解为提供者 如:dubbo的提供者,springcloud的rest服务提供者),参与事务发起者的事务

  • 事务协调者(tx-manager),协调分布式事务的提交,回滚等。

  • 技术方案

  • 协调者(tx-manager)采用eureka作为注册中心,集群配置,达到服务的高可用,采用redis集群来分布式存储事务数据, springboot 提供rest服务,采用netty与参与者,发起者进行长连接通信。

  • 发起者与协调者,采用Aspect AOP 切面思想,SPI,多线程,异步回调,线程池,netty通信等技术。

  • SPI扩展

    • 本地事务恢复,支持redis,mogondb,zookeeper,file,mysql等关系型数据库
    • 本地事务序列化保存,支持java,hessian,kryo,protostuff
    • netty通信序列化方式,支持 hessian,kryo,protostuff

官网

## http://dromara.org 或者 https://dromara.org 有时候https打不开。

Stargazers over time

Stargazers over time

文档

## http://dromara.org/website/zh-cn/docs/raincat/index.html

视频源码分析

### 环境搭建

### 启动过程

### 事务提交

### 回滚恢复

### 管理后台

流程图

FAQ

  • 为什么我下载的代码后,用idea打开没有相应的get set 方法呢?

    ##### 答:因为框架使用了Lombok包,它是在编译的时期,自动生成get set方法,并不影响运行,如果觉得提示错误难受,请自行下载lombok包插件,lombok官网

  • 为什么我运行demo工程,找不到applicationContent.xml呢?

    ##### 答:请设置项目的资源文件夹。

  • 为什么我启动admin项目的时候,会报mongo 集群连接错误呢?

    ##### 答:这是因为项目里面有mongo代码,spring boot会自动配置,该错误没有关系,只要admin项目能正常启动就行。

Support

  • 如有任何问题欢迎加入QQ群进行讨论

  • 微信公众号

# Contribution

Extension points exported contracts — how you extend this code

JedisClient (Interface)
JedisClient. @author xiaoyu(Myth) [6 implementers]
raincat-common/src/main/java/org/dromara/raincat/common/jedis/JedisClient.java
NettyService (Interface)
NettyService. @author xiaoyu [6 implementers]
raincat-manager/src/main/java/org/dromara/raincat/manager/netty/NettyService.java
RecoverTransactionService (Interface)
RecoverTransactionService. @author xiaoyu(Myth) [10 implementers]
raincat-admin/src/main/java/org/dromara/raincat/admin/service/RecoverTransactionService.java
TransactionRecoverRepository (Interface)
TransactionRecoverRepository. @author xiaoyu [10 implementers]
raincat-core/src/main/java/org/dromara/raincat/core/spi/TransactionRecoverRepository.java
PayMapper (Interface)
@author xiaoyu [9 implementers]
raincat-sample/raincat-springcloud-sample/raincat-springcloud-sample-pay/src/main/java/org/dromara/raincat/springcloud/sample/pay/mapper/PayMapper.java
OrderMapper (Interface)
@author xiaoyu [9 implementers]
raincat-sample/raincat-dubbo-sample/raincat-dubbo-sample-order/src/main/java/org/dromara/raincat/dubbo/sample/order/mapper/OrderMapper.java
ObjectSerializer (Interface)
ObjectSerializer. @author xiaoyu [8 implementers]
raincat-common/src/main/java/org/dromara/raincat/common/serializer/ObjectSerializer.java
IExecute (Interface)
@author xiaoyu [4 implementers]
raincat-manager/src/main/java/org/dromara/raincat/manager/concurrent/IExecute.java

Core symbols most depended-on inside this repo

t
called by 1350
raincat-admin/src/main/resources/static/bundle.js
i
called by 304
raincat-admin/src/main/resources/static/bundle.js
o
called by 283
raincat-admin/src/main/resources/static/bundle.js
o
called by 240
raincat-admin/src/main/resources/static/0.bundle.js
a
called by 227
raincat-admin/src/main/resources/static/1.bundle.js
r
called by 211
raincat-admin/src/main/resources/static/4.bundle.js
l
called by 209
raincat-admin/src/main/resources/static/bundle.js
o
called by 194
raincat-admin/src/main/resources/static/3.bundle.js

Shape

Method 921
Function 482
Class 217
Interface 42
Enum 11

Languages

Java71%
TypeScript29%

Modules by API surface

raincat-admin/src/main/resources/static/bundle.js318 symbols
raincat-common/src/main/java/org/dromara/raincat/common/holder/DateUtils.java59 symbols
raincat-admin/src/main/resources/static/4.bundle.js31 symbols
raincat-admin/src/main/resources/static/3.bundle.js31 symbols
raincat-admin/src/main/resources/static/2.bundle.js31 symbols
raincat-admin/src/main/resources/static/1.bundle.js31 symbols
raincat-admin/src/main/resources/static/0.bundle.js31 symbols
raincat-common/src/main/java/org/dromara/raincat/common/config/TxConfig.java24 symbols
raincat-admin/src/main/java/org/dromara/raincat/admin/spi/RecoverConfiguration.java17 symbols
raincat-core/src/main/java/org/dromara/raincat/core/spi/repository/FileTransactionRecoverRepository.java13 symbols
raincat-common/src/main/java/org/dromara/raincat/common/jedis/JedisClientSingle.java13 symbols
raincat-common/src/main/java/org/dromara/raincat/common/jedis/JedisClientSentinel.java13 symbols

Datastores touched

(mysql)Database · 1 repos
txDatabase · 1 repos
alipayDatabase · 1 repos
orderDatabase · 1 repos
payDatabase · 1 repos
stockDatabase · 1 repos
test_1Database · 1 repos
wechatDatabase · 1 repos

For agents

$ claude mcp add raincat \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact