分布式项目项目中seata升级配置使用最新的版本seata-server-1.7.1

本文讲述了在将分布式项目中的Seata-server从1.4.0升级到1.7.1时,如何调整配置文件,特别是将registry.conf和file.conf合并到application.yml,以及在迁移过程中的注意事项,包括console和security配置的处理。

在做分布式项目过程中,由于项目团队需要,需要把原来的seata-server-1.4.0升级成seata-server-1.7.1,配置文件需要调整:

原来版本配置文件:

新版本配置文件:

新版本把原来的版本中配置文件registry.conf和 file.conf合并成一个application.yml了 

把新版本中的application.example.yml配置直接拷贝到application.yml,调整config和registry的type为nacos以及store的mode为file。

 

注意:如果直接把内容覆盖,需要添加以下配置,可以参考未覆盖前的application.yml

console:
  user:
    username: seata
    password: seata

  security:
    secretKey: SeataSecretKey0c382ef121d778043159209298fd40bf3850a017
    tokenValidityInMilliseconds: 1800000
    ignore:
      urls: /,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.jpeg,/**/*.ico,/api/v1/auth/login

如果不添加以上配置,启动有类似如下图所示:

经过以上配置后启动,启动成功后入下图所示:

<think>嗯,用户问的是Seata作为分布式事务的使用方法。我需要先回忆一下Seata的基本概念和组件。Seata是阿里开源的分布式事务解决方案,支持AT、TCC、Saga和XA模式。最常用的应该是AT模式吧。用户可能想知道如何在实际项目中集成Seata,所以得从配置开始讲起。 首先,应该介绍如何添加依赖。比如在Spring Boot项目中,需要引入Seata的starter,可能还要注意版本兼容性。然后是配置文件,比如registry.conf和file.conf,这里需要配置注册中心和事务日志存储方式,比如用Nacos作为注册中心,数据库存储事务日志。接下来,可能需要说明如何在业务代码中使用@GlobalTransactional注解来标记分布式事务的入口方法。要确保每个参与的服务都配置了正确的数据源代理,这样才能拦截SQL操作,生成undo_log,实现回滚。 然后,给出一个示例代码,比如订单服务和库存服务之间的调用,使用Feign客户端。这时候,主方法上添加@GlobalTransactional,这样Seata就能管理整个事务。需要提醒用户每个微服务的数据源都要用Seata的DataSourceProxy来包装,否则事务不会生效。 还要考虑配置事务组,比如在application.yml中设置tx-service-group,并确保与Seata服务器端的配置一致。另外,undo_log表的创建也是必须的,每个业务数据库都需要有这个表,用于记录回滚日志。可能用户在实际应用中会遇到问题,比如事务不生效,这时候需要检查配置是否正确,比如注册中心是否连通,数据源代理是否正确配置,以及undo_log表是否存在。此外,事务模式的选择也很重要,AT模式对业务侵入小,但某些场景可能需要TCC模式。 最后,要提醒用户注意Seata Server的部署,需要启动Seata的服务端,并配置好存储模式,比如使用db存储时,要初始化对应的表。可能还需要解释AT模式的工作原理,比如全局锁的机制,如何保证隔离性,以及在并发情况下可能出现的异常处理。 相关的问题可能涉及不同模式的区别,如何选择模式,Seata的高可用配置,以及如何处理分布式事务中的异常情况,比如超时或网络问题。此外,性能优化和常见错误排查也是用户可能会关心的问题。</think>Seata分布式事务使用详解(AT模式): 1. 添加依赖(Spring Boot项目): ```xml <dependency> <groupId>io.seata</groupId> <artifactId>seata-spring-boot-starter</artifactId> <version>1.7.1</version> </dependency> ``` 2. 配置文件示例: ```yaml # application.yml seata: enabled: true application-id: order-service tx-service-group: my_tx_group service: vgroup-mapping: my_tx_group: default registry: type: nacos nacos: server-addr: 127.0.0.1:8848 config: type: nacos nacos: server-addr: 127.0.0.1:8848 ``` 3. 核心业务代码示例: ```java @Service public class OrderService { @Autowired private InventoryFeignClient inventoryFeignClient; @GlobalTransactional(name = "createOrder", rollbackFor = Exception.class) public void createOrder(Order order) { // 本地事务操作 orderMapper.insert(order); // 远程调用库存服务 inventoryFeignClient.deductStock(order.getProductId(), order.getCount()); // 其他业务操作... } } ``` 4. 关键配置说明: - 每个参与事务的微服务都需要: - 配置Seata数据源代理 ```java @Configuration public class DataSourceConfig { @Bean @ConfigurationProperties(prefix = "spring.datasource") public DruidDataSource druidDataSource() { return new DruidDataSource(); } @Primary @Bean public DataSource dataSource(DataSource dataSource) { return new DataSourceProxy(dataSource); } } ``` - 创建undo_log表(每个业务数据库都需要) ```sql CREATE TABLE undo_log ( id bigint(20) NOT NULL AUTO_INCREMENT, branch_id bigint(20) NOT NULL, xid varchar(100) NOT NULL, context varchar(128) NOT NULL, rollback_info longblob NOT NULL, log_status int(11) NOT NULL, log_created datetime NOT NULL, log_modified datetime NOT NULL, PRIMARY KEY (id), UNIQUE KEY ux_undo_log (xid,branch_id) ); ``` 实现原理说明: 1. 事务协调:Seata通过TC(Transaction Coordinator)协调全局事务 2. 分支注册:每个微服务作为RM(Resource Manager)向TC注册分支事务 3. 两阶段提交: - 第一阶段:业务SQL和回滚日志(undo_log)在本地事务中提交 - 第二阶段:全局提交(异步删除undo_log)或回滚(通过undo_log补偿)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值