目前流行的是tx-lcn
引入包如下:
<!-- springcloud 分布式事物 -->
<dependency>
<groupId>com.codingapi</groupId>
<artifactId>transaction-springcloud</artifactId>
<version>4.1.0</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.codingapi</groupId>
<artifactId>tx-plugins-db</artifactId>
<version>4.1.0</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency>
框架特点:
- 支持各种基于spring的db框架
- 兼容SpringCloud、Dubbo
- 使用简单,低依赖,代码完全开源
- 基于切面的强一致性事务框架
- 高可用,模块可以依赖Dubbo或SpringCloud的集群方式做集群化,TxManager也可以做集群化
- 支持本地事务和分布式事务共存
- 事务补偿机制,服务故障或挂机再启动时可恢复事务
说明:在使用LCN分布式事务时,只需要将事务的开始方法添加@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(){}
另外一个是FesCar,现改名为Seata(Simple Extensible Autonomous Transaction Architecture):一种分布式事务解决方案,具有高性能和易于使用的微服务架构。