SpringCloud整合Seata高可用配置

这里我使用了最新版本的Seata 2.0,下载地址Releases · seata/seata · GitHub

由于是在一台电脑上,这里直接修改端口号模拟集群,解压后的文件夹直接复制一份,进入conf目录下的application.yml文件,基础的配置就不说了(到高可用这一步,依赖什么的应该都配置好了),这里只说关键部分:

Seata部分

1、修改端口,只需要修改这个位置的值,这个端口是Seata控制台的端口

server:
  port: 7091

 真正的监听端口是8091,官方做出了解释:由控制台端口值加上1000就是默认的监听端口

# server:

#   service-port: 8091 #If not configured, the default is '${server.port} + 1000'

 方便起见这里建议直接修改控制台的端口

2、修改对应的集群名称,让两个Seata分别处于不同集群

registry:
  nacos:
    cluster: 集群名

 然后启动nacos,接下来分别启动两个Seata服务端

Nacos部分

3、进入nacos控制台,在配置管理中添加配置

我这里DataId填了client.properties,Group填了SEATA_GROUP,配置格式选择Properties,加入下面内容

# 事务组映射关系

service.vgroupMapping.事务组名称=集群名称

微服务部分

 4、配置微服务的yml配置文件,这里只展示了一部分

seata:
  tx-service-group: #事务组名称,和上面事务组映射关系中的事务组名称保持一致
  config:
    type: nacos
    nacos:
      server-addr: localhost:8848
      username: nacos
      password: nacos
      group: SEATA_GROUP # 刚刚配置文件的所在分组
      data-id: client.properties # 刚刚配置文件的名称

以上配置做完后,启动微服务,可以在其中一个Seata命令行看到注册信息,这时候修改client.properties中的配置的service.vgroupMapping.事务组名称的值,改成另一个集群名,如果能在另一个Seata命令行中看到注册信息则说明配置成功。

第一次写文章,欢迎批评指正。

 

### Spring Cloud 整合 Seata Saga 模式的使用教程 #### 1. 准备工作 为了使Spring Cloud应用能够支持Seata的Saga模式,需先完成环境准备。这包括安装Docker以及配置Java开发环境。 确保已按照最佳实践设置好了Seata Server的高可用部署[^1]。此过程通常涉及利用`docker-compose`来启动多个Seata实例以提高系统的稳定性和可靠性。 #### 2. 添加依赖项 在项目的pom.xml文件中加入必要的Maven依赖: ```xml <dependency> <groupId>io.seata</groupId> <artifactId>seata-all</artifactId> <version>${seata.version}</version> </dependency> <!-- 如果项目基于Spring Boot,则还需要 --> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Hoxton.SR9</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> ``` #### 3. 配置Seata客户端 编辑application.ymlapplication.properties文件,在其中指定Seata的相关参数,比如注册中心地址和服务端口等信息。 对于Saga模式而言,特别需要注意的是要开启相应的特性开关,并指明状态机定义的位置: ```yaml seata: enabled: true tx-service-group: my_test_tx_group saga: service: max-retry-count: 5 branch-register-enabled: false storage: mode: file # 或者db, redis等其他存储方式 log-store: type: db ``` #### 4. 定义业务流程的状态机 创建JSON格式的状态图文件用于描述整个分布式事务中的各个阶段及其转换关系。每个节点代表一次远程调用或者是其对应的补偿操作。这些文件应当放置于资源目录下以便被应用程序加载读取。 例如,下面展示了一个简单的转账场景下的状态转移模型: ```json { "pi": { "name": "TransferMoney", "lang": "TEMPATE_LANG_JSON", "steps": [ {"compensateMethod": "", "method": "transferFrom", "params": ["${fromAccountId}", "${amount}"]}, {"compensateMethod": "refundTo", "method": "transferTo", "params": ["${toAccountId}", "${amount}"]} ] } } ``` 上述例子中包含了两个主要动作——从账户扣款(`transferFrom`)和向目标账户打款(`transferTo`);当任一步骤失败时会触发回滚机制即执行相反方向的操作作为补偿措施[^2]。 #### 5. 编写服务接口实现类 根据之前设计好的状态机文档编写具体的微服务方法体。这里假设存在名为AccountService的服务负责处理资金变动请求: ```java @Service public class AccountServiceImpl implements AccountService { @Override public void transferFrom(String fromAccountId, BigDecimal amount){ // 执行实际的资金划转逻辑... } @Override public void refundTo(String toAccountId, BigDecimal amount){ // 实现退款功能... } ... } ``` 注意:以上代码片段仅为示意用途,请依据实际情况调整具体细节。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值