seata官网 链接地址:Seata 是什么
一、Seata整合 控制分布式事务步骤
1)、每一个微服务先必须创建ubdo_log回滚日志表;
2)、安装事务协调器:seata-server: https://github.com/seata/seata/releases
3)、整合
1、导入依赖 :spring-cloud-starter-alibaba-seata seata-all-0.7.1
2、解压启动seata-server;
registry.conf :注册中心配置 修改它: registry type = "nacos"
file.conf:
3、所有想用到分布式事务的微服务 使用 seata DataSourceProxy代理自己的数据源
4、每个微服务都必须要导入
registry.conf
file.conf vgroup_mapping.{application.name}-fescar-service-group = "default"
5、给分布式大事务的入口标注: @GlobalTransactional
6、每一个小事务标注: @Transactional
TC (Transaction Coordinator) - 事务协调者
维护全局和分支事务的状态,驱动全局事务提交或回滚。
TM (Transaction Manager) - 事务管理器
定义全局事务的范围:开始全局事务、提交或回滚全局事务。
RM (Resource Manager) - 资源管理器
管理分支事务处理的资源,与TC交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚。
DataSourceProxy 管理默认的数据源
@Configuration
public class MySeataConfig {
@Autowired
DataSourceProperties dataSourceProperties;
@Bean
public DataSource dataSource(DataSourceProperties dataSourceProperties) {
//调用默认的数据源
HikariDataSource dataSource = dataSourceProperties.initializeDataSourceBuilder().type(HikariDataSource.class).build();
if (StringUtils.hasText(dataSourceProperties.getName())) {
dataSource.setPoolName(dataSourceProperties.getName());
}
//用SEATA包装 原来的数据源 。交给seata管理
return new DataSourceProxy(dataSource);
}
}