欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Spring Cloud Alibaba整合seata 1.4.0

程序员文章站 2022-03-19 15:31:02
本博客记录Spring Cloud Alibaba整合seata 1.4.0,达到整合seata的项目能够成功启动的目标即可,后续开发遇到关于seata的其他问题,会持续更新。步骤一、下载seata server步骤二、seata server端配置修改步骤三、启动seata server步骤四、修改客户端需要使用到的配置,并且添加到nacos配置管理中步骤五、项目整合seata步骤六、启动项目步骤一、下载seata server下载地址:http://seata.io....

本博客记录Spring Cloud Alibaba整合seata 1.4.0,达到整合seata的项目能够成功启动的目标即可,后续开发遇到关于seata的其他问题,会持续更新。

 

步骤一、下载seata server

步骤二、seata server端配置修改

步骤三、启动seata server

步骤四、修改客户端需要使用到的配置,并且添加到nacos配置管理中

步骤五、项目整合seata

步骤六、启动项目


步骤一、下载seata server

下载地址:http://seata.io/zh-cn/blog/download.html 下载binary类型的,解压即可用。

Spring Cloud Alibaba整合seata 1.4.0

 

步骤二、seata server端配置修改

将步骤一下载的seata server 1.4.0解压,seata-server-1.4.0\seata\conf目录下分别修改file.conf、registry.conf文件

修改file.conf文件

mode = "db"

db {
    ## the implement of javax.sql.DataSource, such as DruidDataSource(druid)/BasicDataSource(dbcp)/HikariDataSource(hikari) etc.
    datasource = "druid"
    ## mysql/oracle/postgresql/h2/oceanbase etc.
    dbType = "mysql"
    driverClassName = "com.mysql.jdbc.Driver"
    url = "jdbc:mysql://127.0.0.1:3306/seata" 
    user = "数据库的user"
    password = "数据库的password"
  }

以上配置需要注意:

1、user和password是自己数据库的用户名和密码

2、driverClassName="com.mysql.jdbc.Driver"适用于mysql 8.0以下的版本,8.0以上的版本需要使用 com.mysql.cj.jdbc.Driver

3、url = "jdbc:mysql://127.0.0.1:3306/seata"中seata是seata服务器需要的数据库,接下来会创建,以自己创建的名字为主。

修改registry.conf文件

registry {
  # file 、nacos 、eureka、redis、zk、consul、etcd3、sofa
  type = "nacos"
  loadBalance = "RandomLoadBalance"
  loadBalanceVirtualNodes = 10

  nacos {
    application = "seata-server"
    serverAddr = "127.0.0.1:8848"
    group = "SEATA_GROUP"
    namespace = "cadb1d46-f1fa-417f-bcc7-504822fd55b3"
    cluster = "default"
    username = "nacos"
    password = "nacos"

  }
}

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

  nacos {
    serverAddr = "127.0.0.1:8848"
    namespace = "cadb1d46-f1fa-417f-bcc7-504822fd55b3"
    group = "SEATA_GROUP"
    username = "nacos"
    password = "nacos"

  }
  
}

 

以上配置需要注意:

1、registry和config都是用nacos(即:将seata服务器注册到nacos,并且配置也通过nacos管理)

2、关于nacos的连接信息以自己的nacos信息为主。

3、namespace, namespace是笔者在nacos上创建的seata namespace, namespace的值是创建后生成的命名空间ID,见下图。

Spring Cloud Alibaba整合seata 1.4.0

 

创建seata服务器所需要的表:

seata-server-1.4.0\seata\conf目录下打开README-zh.md

Spring Cloud Alibaba整合seata 1.4.0

server下载sql文件:选择db/mysql.sql

建表之前需要创建相应的数据库,本文使用seata作为数据库名。在创建的数据库上执行下载的sql文件。

Spring Cloud Alibaba整合seata 1.4.0

 

步骤三、启动seata server

启动seata服务器之前需要启动Nacos服务器,不再赘述。

seata-server-1.4.0\seata\bin下运行seata-server.bat

Spring Cloud Alibaba整合seata 1.4.0

启动成功后,打开nacos页面可以看到seata-server已经注册到nacos中。

Spring Cloud Alibaba整合seata 1.4.0

 

步骤四、修改客户端需要使用到的配置,并且添加到nacos配置管理中

seata-server-1.4.0\seata\conf目录下打开README-zh.md

Spring Cloud Alibaba整合seata 1.4.0

config-center下载 config.txt文件,下载完成后修改config.txt。

service.vgroupMapping.my-service-group=default

store.db.datasource=druid
store.db.dbType=mysql
store.db.driverClassName=com.mysql.jdbc.Driver
store.db.url=jdbc:mysql://127.0.0.1:3306/seata?useUnicode=true&rewriteBatchedStatements=true
store.db.user=root
store.db.password=root

db的连接配置不再赘述,这里说一下service.vgroupMapping.order-service-group=default

service.vgroupMapping.my-service-group=default

my-service-group必须与项目yml配置中的的tx-service-group保持一致。

项目yml使用到的seata配置:

spring:
  cloud:
    alibaba:
      seata:          
        tx-service-group: order-service-group

将config.txt中的配置添加到nacos配置管理中。

sh nacos-config.sh -h localhost -p 8848 -g SEATA_GROUP -t cadb1d46-f1fa-417f-bcc7-504822fd55b3 -u nacos -w nacos

说明:

-h: nacos的hostname

-p: nacos的端口

-g: 配置添加到哪个group下

-t: 配置添加到哪个namespace下

-u: nacos的username

-w: nacos的password

详情请查看nacos-config.sh文件

以上是一段linux命令,需要在seata/conf目录下打开git bash执行。

看到执行结果为0失败表示配置添加到nacos配置管理中,去nacos看看。

=========================================================================
 Complete initialization parameters,  total-count:60 ,  failure-count:0
=========================================================================
 Init nacos config finished, please start seata-server.

Spring Cloud Alibaba整合seata 1.4.0

步骤五、项目整合seata

添加依赖

本文所用范例对用的spring cloud alibaba的版本是2.1.0.RELEASE

    dependency>
	    <groupId>com.alibaba.cloud</groupId>
	    <artifactId>spring-cloud-starter-alibaba-seata</artifactId>
	    <exclusions>
	    	<exclusion>
	    		<groupId>io.seata</groupId>
	    		<artifactId>seata-all</artifactId>
	    	</exclusion>
	    </exclusions>
	</dependency>
	<!-- seata-all版本与seata server版本保持一致 -->
	<dependency>
		<groupId>io.seata</groupId>
		<artifactId>seata-all</artifactId>
		<version>1.4.0</version><!--$NO-MVN-MAN-VER$-->
	</dependency>

注意:seata-all版本与seata server版本保持一致

添加yml配置

spring:
  application:
    name: my-service
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848
    alibaba:
      seata:          
        tx-service-group: my-service-group

spring.cloud.alibaba.seata.tx-service-group的值务必与service.vgroupMapping.my-service-group=default所指定的保持一致。

项目resource路径下添加file.conf和registry.conf文件

Spring Cloud Alibaba整合seata 1.4.0

再次打开README-zh.md文件

Spring Cloud Alibaba整合seata 1.4.0

client下载文件,并作修改。

修改file.conf文件

service {
  #transaction service group mapping
  vgroupMapping.my-service-group = "default"
}

my-service-group与上面的配置保持一致。

修改registry.conf文件,与步骤二中修改seata服务器端的registry.confi文件一致。

 

registry {
  # file 、nacos 、eureka、redis、zk、consul、etcd3、sofa
  type = "nacos"
  loadBalance = "RandomLoadBalance"
  loadBalanceVirtualNodes = 10

  nacos {
    application = "seata-server"
    serverAddr = "127.0.0.1:8848"
    group = "SEATA_GROUP"
    namespace = "cadb1d46-f1fa-417f-bcc7-504822fd55b3"
    cluster = "default"
    username = "nacos"
    password = "nacos"

  }
}

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

  nacos {
    serverAddr = "127.0.0.1:8848"
    namespace = "cadb1d46-f1fa-417f-bcc7-504822fd55b3"
    group = "SEATA_GROUP"
    username = "nacos"
    password = "nacos"

  }
  
}

步骤六、启动项目

项目成功启动,并且后续出现类似信息

will connect to 10.176.62.102:8091
will connect to 10.176.62.102:8091
NettyPool create channel to transactionRole:TMROLE,address:10.176.62.102:8091,msg:< RegisterTMRequest{applicationId='my-service', transactionServiceGroup='my-service-group'} >
NettyPool create channel to transactionRole:RMROLE,address:10.176.62.102:8091,msg:< RegisterRMRequest{resourceIds='null', applicationId='my-service', transactionServiceGroup='my-service-group'} >
Load [io.seata.serializer.hessian.HessianSerializer] class fail. com/caucho/hessian/io/AbstractHessianOutput
register TM success. client version:1.4.0, server version:1.4.0,channel:[id: 0xb22fdf8e, L:/10.176.62.102:55562 - R:/10.176.62.102:8091]
register RM success. client version:1.4.0, server version:1.4.0,channel:[id: 0x45a54a20, L:/10.176.62.102:55561 - R:/10.176.62.102:8091]
register success, cost 59 ms, version:1.4.0,role:TMROLE,channel:[id: 0xb22fdf8e, L:/10.176.62.102:55562 - R:/10.176.62.102:8091]
register success, cost 59 ms, version:1.4.0,role:RMROLE,channel:[id: 0x45a54a20, L:/10.176.62.102:55561 - R:/10.176.62.102:8091]

 

不足之处欢迎指出。

 

下一篇:Spring Cloud Alibaba整合seata 1.4.0 (二)

本文地址:https://blog.csdn.net/qq_26817225/article/details/112566314