Seata整合nacos

author:zxw

email:502513206@qq.com

@ Jishou University


1.前言

之前一直使用的是seata+eureka的方式来使用,最近自己在家的时候忽然想用nacos来试试,毕竟之前没怎么用过。使用后发现和eureka的用法还是差别蛮大的,折腾了一天才把项目跑起来,以此来记录下使用方法。

2.使用

在使用前当然得先下载相关的包,这边说下我使用的版本

nacos:https://gitee.com/mirrors/Nacos?_from=gitee_search 我是直接通过源码构建启动的,直接拉的develop分支代码

seata:https://github.com/seata/seata/releases/tag/v1.4.0 使用的1.4版本

在使用前我们先把源码中的脚本拷贝到seata-server的目录中,config.txt放在seata根目录下,其余两个放在conf目录中,然后在conf目录中执行下面的命令sh nacos-config.sh hosti*(需要先启动nacos)这样就会将配置加入到nacos的配置中心里。
在这里插入图片描述

加入成功后,打开nacos的配置中心可以看到如下配置
在这里插入图片描述
接着我们打开seata-server的conf目录中的registry.conf文件和file.conf文件修改几处配置

registry.conf:把两处的type修改为nacos就ok了

registry{
	type = "nacos"
}
config{
	type = "nacos"
}

file.conf:这边可以根据自身情况选择存储方式,这里我使用的db

store {
  ## store mode: file、db、redis
  mode = "db"
}

然后进入bin目录,直接双击seata-server.bat启动,然后就可以在nacos的注册列表中找到seata-server节点。

接着就是我们自己的项目工程了,首先引入我们nacos和seata的maven,下面是我使用的maven配置,比较要注意的一个点就是seata-spring-boot-starter的版本要为1.3,之前用的1.1死活连不上,换成1.1的以后就连接成功了。

				<spring-boot.version>2.3.2.RELEASE</spring-boot.version>			
			<dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-dependencies -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Hoxton.SR5</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <!-- https://mvnrepository.com/artifact/com.alibaba.cloud/spring-cloud-alibaba-dependencies -->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2.2.1.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
		<dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-seata</artifactId>
            <version>LATEST</version>
            <exclusions>
                <exclusion>
                    <groupId>io.seata</groupId>
                    <artifactId>seata-spring-boot-starter</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>io.seata</groupId>
            <artifactId>seata-spring-boot-starter</artifactId>
            <version>1.3.0</version>
        </dependency>

然后就是我们的配置文件了,我们之前导入的config.txt里面有个组是my_test_tx_group 这边我们也使用默认的这个组,名字一定要对上不然会连接不上。剩下的其实使用默认的配置就够了,程序启动成功后,查看一下seata的cmd界面,如果连接成功会有显示。

server:
  port: 8084
spring:
  application:
    name: storage
  datasource:
    username: root
    password: 123456
    url: jdbc:mysql://localhost:3306/fescar?characterEncoding=utf-8&?useSSL=true
    driver-class-name: com.mysql.jdbc.Driver
  cloud:
    alibaba:
      seata:
        tx-service-group: my_test_tx_group
      server-addr: 127.0.0.1:8848
seata:
  enabled: true
  application-id: storage
  tx-service-group: my_test_tx_group      #事务组
  enable-auto-data-source-proxy: true
  config:
    type: nacos
    nacos:
      namespace:
      serverAddr: 127.0.0.1:8848
      group: SEATA_GROUP
      username: "nacos"
      password: "nacos"
  registry:
    type: nacos
    nacos:
      application: seata-server
      server-addr: 127.0.0.1:8848
      group: SEATA_GROUP
      namespace:
      username: "nacos"
      password: "nacos"

logging:
  level:
    org.springframework.cloud.alibaba.seata.web: debug
    io.seata: debug
#eureka:
#  client:
#    service-url:
#      defaultZone: http://localhost:10010/eureka
#  instance:
#    ip-address: 127.0.0.1
#    prefer-ip-address: true

下面是我工程的项目地址:https://gitee.com/xiaowei_zxw/transaction-demo (记得点个start)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Nacos是一个用于动态服务发现、配置管理和服务管理的开源项目,而Seata则是一个开源的分布式事务解决方案。将NacosSeata进行整合可以实现在分布式环境下的事务一致性管理和服务注册与发现。 在整合NacosSeata的Demo中,我们首先需要搭建一个分布式的环境。可以使用Docker来快速搭建,通过Docker容器分别部署NacosSeata的服务。 1. 首先运行Nacos的容器,并将其设置为注册中心。可以通过在Nacos容器内运行以下命令来启动Nacos服务: ``` docker run --name nacos_server -d -e MODE=standalone -p 8848:8848 nacos/nacos-server ``` 2. 接下来,运行Seata的容器,并将其设置为Seata的事务协调器。可以通过在Seata容器内运行以下命令来启动Seata服务: ``` docker run --name seata_server -d -p 8091:8091 seataio/seata-server ``` 3. 在Demo中,我们需要定义业务服务和订单服务。在业务服务中,我们使用Nacos提供的服务注册和发现能力,将业务服务注册到Nacos注册中心。在订单服务中,我们使用Seata实现分布式事务管理。业务服务通过调用订单服务来完成事务操作。 4. 在业务服务的配置文件中,将Nacos注册中心的地址配置好,以便业务服务可以注册和发现其他服务。 5. 在订单服务的配置文件中,将Seata事务协调器的地址和端口配置好,以便订单服务可以与Seata进行事务管理。 使用NacosSeata进行整合后,可以实现业务服务和订单服务之间的分布式事务管理。通过在业务服务中注册到Nacos注册中心,可以动态发现和调用订单服务。同时,在订单服务中,Seata能够提供分布式事务一致性的保障,避免了分布式事务的难题。 总之,通过整合NacosSeata,在分布式环境中实现了服务注册与发现和分布式事务的管理。这样能够更好地保证系统的可用性和一致性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值