SpringCloud 集成 nacos 1.2.1 和 seata 1.1.0

一、项目核心环境


<spring-boot.version>2.2.5.RELEASE</spring-boot.version>
<spring-cloud.version>Hoxton.SR3</spring-cloud.version>
<com-alibaba-cloud.version>2.2.1.RELEASE</com-alibaba-cloud.version>


<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>${spring-boot.version}</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-dependencies</artifactId>
    <version>${spring-cloud.version}</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-alibaba-dependencies</artifactId>
    <version>${com-alibaba-cloud.version}</version>
    <type>pom</type>
    <scope>import</scope>
 </dependency>


<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>


<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-seata</artifactId>
</dependency>

官网下载  nacos 1.2.1 和  seata 1.1.0, nacos 和 seata 的数据库脚本,可以到我的资源中心下载。

 

二、主要配置


1、修改 nacos 的配置文件 application.properties,启用并修改一些内容

### If user MySQL as datasource:
spring.datasource.platform=mysql

### Count of DB:
db.num=1

### Connect URL of DB:
db.url.0=jdbc:mysql://192.168.2.244:3306/nacos-seata?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=root

完成之后,nacos 就可以启动了。

2、修改 seata 的配置文件 registry.conf

registry {
  # file 、nacos 、eureka、redis、zk、consul、etcd3、sofa
  type = "nacos"

  nacos {
    serverAddr = "192.168.2.88:8848"
    namespace = ""
    cluster = "default"
  }
}

config {
  # file、nacos 、apollo、zk、consul、etcd3
  type = "nacos"

  nacos {
    serverAddr = "192.168.2.88:8848"
    namespace = ""
    group = "SEATA_GROUP"
  }
}

此时 seata 的注册中心及配置中心已经改为nacos了(言外之意, file.conf 可以删除了),

接着,咋们就得想办法把 file.conf 中的配置信息放进 nacos 中,这里有两种方法

  • 从官网下载 config.txt 和 相应的脚本:
# linux/mac: 
sh nacos-config.sh localhost:8848      
   
# windows: 
nacos-config.py localhost:8848

# localhost:8848 需要修改成你自己nacos的访问地址
  •  使用我整理的脚本(最精简版,其他配置按官网的说明,都采用默认值),直接将数据插入nacos的表中
INSERT INTO `config_info` VALUES (186, 'service.vgroupMapping.yyk_tx_group', 'SEATA_GROUP', 'default', 'c21f969b5f03d33d43e04f8f136e7682', '2020-04-14 14:36:56', '2020-04-14 14:36:56', NULL, '0:0:0:0:0:0:0:1', '', '', NULL, NULL, NULL, 'text', NULL);
INSERT INTO `config_info` VALUES (187, 'service.default.grouplist', 'SEATA_GROUP', '127.0.0.1:8091', 'c32ce0d3e264525dcdada751f98143a3', '2020-04-14 14:37:48', '2020-04-14 14:37:48', NULL, '0:0:0:0:0:0:0:1', '', '', NULL, NULL, NULL, 'text', NULL);
INSERT INTO `config_info` VALUES (188, 'store.mode', 'SEATA_GROUP', 'db', 'd77d5e503ad1439f585ac494268b351b', '2020-04-14 14:38:48', '2020-04-14 14:38:48', NULL, '0:0:0:0:0:0:0:1', '', '', NULL, NULL, NULL, 'text', NULL);
INSERT INTO `config_info` VALUES (189, 'store.db.datasource', 'SEATA_GROUP', 'druid', '3d650fb8a5df01600281d48c47c9fa60', '2020-04-14 14:39:09', '2020-04-14 14:39:09', NULL, '0:0:0:0:0:0:0:1', '', '', NULL, NULL, NULL, 'text', NULL);
INSERT INTO `config_info` VALUES (190, 'store.db.dbType', 'SEATA_GROUP', 'mysql', '81c3b080dad537de7e10e0987a4bf52e', '2020-04-14 14:39:34', '2020-04-14 14:39:34', NULL, '0:0:0:0:0:0:0:1', '', '', NULL, NULL, NULL, 'text', NULL);
INSERT INTO `config_info` VALUES (191, 'store.db.driverClassName', 'SEATA_GROUP', 'com.mysql.jdbc.Driver', '683cf0c3a5a56cec94dfac94ca16d760', '2020-04-14 14:39:55', '2020-04-14 14:39:55', NULL, '0:0:0:0:0:0:0:1', '', '', NULL, NULL, NULL, 'text', NULL);
INSERT INTO `config_info` VALUES (192, 'store.db.url', 'SEATA_GROUP', 'jdbc:mysql://192.168.2.244:3306/ak-nacos-seata?useUnicode=true', '72e90c5e05525091a5366fa8ec591c1d', '2020-04-14 14:40:17', '2020-04-14 14:40:17', NULL, '0:0:0:0:0:0:0:1', '', '', NULL, NULL, NULL, 'text', NULL);
INSERT INTO `config_info` VALUES (193, 'store.db.user', 'SEATA_GROUP', 'root', '63a9f0ea7bb98050796b649e85481845', '2020-04-14 14:40:35', '2020-04-14 14:40:35', NULL, '0:0:0:0:0:0:0:1', '', '', NULL, NULL, NULL, 'text', NULL);
INSERT INTO `config_info` VALUES (194, 'store.db.password', 'SEATA_GROUP', 'ROOTroot8888', '9a210dd006707a1d85bcb1b45aba6d37', '2020-04-14 14:40:53', '2020-04-14 14:40:53', NULL, '0:0:0:0:0:0:0:1', '', '', NULL, NULL, NULL, 'text', NULL);
INSERT INTO `config_info` VALUES (196, 'store.db.maxConn', 'SEATA_GROUP', '50', 'c0c7c76d30bd3dcaefc96f40275bdc0a', '2020-04-14 14:41:41', '2020-04-14 14:41:41', NULL, '0:0:0:0:0:0:0:1', '', '', NULL, NULL, NULL, 'text', NULL);

到这一步,seata 也可以启动了。

 

三、项目配置

最后在项目的 application.yml 或者 bootstrap.yml 中加入:

# nacos 的配置
spring:
  cloud:
    nacos:
      config:
        server-addr: ${nacos.url}:8848
        group: DEFAULT_GROUP
        prefix: demo-order
        file-extension: yaml
      discovery:
        server-addr: ${nacos.url}:8848

# seata 的配置
seata:
   enabled: true
   application-id: ak-server-order
   tx-service-group: yyk_tx_group
   config:
      type: nacos
      nacos:
         namespace:
         serverAddr: ${nacos.url}:8848
         group: SEATA_GROUP
   registry:
      type: nacos
      nacos:
         server-addr: ${nacos.url}:8848
         namespace:

到此为止,大功告成。接下来就是coding,看你的了!

 

欢迎转发,如对你有所帮助,请点个赞,谢谢!

 

 

最后放个彩蛋,希望大家别掉坑里来,或者掉坑里的朋友能马上爬上来:

alibaba cloud 从 2.2.0.RELEASE  升级到 2.2.1.RELEASE之后,我们一个项目启动死循环刷nacos中的配置,如下图:

最后发现是 mybatis-plus 没用配置 type-aliases-package 和 mapper-locations 。

 

好的,关于这个问题,我可以提供一些参考资料。首先,Spring Cloud是一个基于Spring框架的微服务架构开发工具包,提供丰富的开箱即用的组件框架,可以较为方便地实现微服务的开发、部署管理。而Nacos是阿里巴巴开源的一个面向服务中心的动态服务发现、配置管理服务治理平台,可以提供服务注册与发现、配置管理、流量管理、域名解析等功能。Seata是阿里巴巴开源的一个分布式事务解决方案,可以提供数据源代理、事务协调、幂等性设计等功能,用于解决微服务架构下的分布式事务问题。 在Spring Cloud中集成NacosSeata,需要进行如下步骤: 1. 引入相应的依赖,例如在pom.xml文件中添加如下依赖: ```xml <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> <version>2.2.3.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>2.2.3.RELEASE</version> </dependency> <dependency> <groupId>io.seata</groupId> <artifactId>seata-spring-boot-starter</artifactId> <version>1.4.2</version> </dependency> ``` 其中,spring-cloud-starter-alibaba-nacos-configspring-cloud-starter-alibaba-nacos-discovery是Nacos的客户端依赖,seata-spring-boot-starter是Seata的客户端依赖。 2. 配置Nacos的地址Seata的事务配置,例如在application.yml文件中添加如下配置: ```yaml spring: cloud: nacos: discovery: server-addr: localhost:8848 config: server-addr: localhost:8848 file-extension: yml seata: tx-service-group: my_test_tx_group application-id: ${spring.application.name} enabled: true mybatis: configuration: # ... seata: enabled: true application-id: ${spring.application.name} tx-service-group: my_test_tx_group config: transport: enabled: true type: TCP server: localhost:8091 heartbeat: true heartbeat.interval.ms: 5000 disableHeartbeatChecking: true client-selector: rnd client-list: 127.0.0.1:8091 shutdown.timeout.ms: 5000 registry: type: Nacos nacos: application: ${spring.application.name} serverAddr: localhost:8848 namespace: public ``` 其中,Nacos的地址Seata的事务配置可以根据具体情况自行修改。 3. 配置完毕后,就可以使用Nacos作为Spring Cloud的注册中心配置中心,使用Seata来解决分布式事务问题了。 以上是关于如何在Spring Cloud中集成NacosSeata的简要介绍,希望能够帮助到你。如果你还有其他问题,可以继续向我提问。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

广东阿莱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值