Spring Cloud Alibaba整合seata 1.4.0
本博客记录Spring Cloud Alibaba整合seata 1.4.0,达到整合seata的项目能够成功启动的目标即可,后续开发遇到关于seata的其他问题,会持续更新。
步骤四、修改客户端需要使用到的配置,并且添加到nacos配置管理中
步骤一、下载seata server
下载地址:http://seata.io/zh-cn/blog/download.html 下载binary类型的,解压即可用。
步骤二、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 = 10nacos {
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,见下图。
创建seata服务器所需要的表:
seata-server-1.4.0\seata\conf目录下打开README-zh.md
去server下载sql文件:选择db/mysql.sql
建表之前需要创建相应的数据库,本文使用seata作为数据库名。在创建的数据库上执行下载的sql文件。
步骤三、启动seata server
启动seata服务器之前需要启动Nacos服务器,不再赘述。
seata-server-1.4.0\seata\bin下运行seata-server.bat
启动成功后,打开nacos页面可以看到seata-server已经注册到nacos中。
步骤四、修改客户端需要使用到的配置,并且添加到nacos配置管理中
seata-server-1.4.0\seata\conf目录下打开README-zh.md
从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.
步骤五、项目整合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文件
再次打开README-zh.md文件
去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 = 10nacos {
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
推荐阅读
-
详解spring cloud整合Swagger2构建RESTful服务的APIs
-
Spring Cloud Alibaba | Sentinel: 服务限流高级篇
-
Spring Cloud Alibaba | 序言
-
Spring Cloud Alibaba | Nacos集群部署
-
微服务架构下使用Spring Cloud Zuul作为网关将多个微服务整合到一个Swagger服务上
-
Spring Cloud Alibaba | Nacos服务中心初探
-
spring cloud 入门系列八:使用spring cloud sleuth整合zipkin进行服务链路追踪
-
Spring Cloud Alibaba | Nacos配置管理
-
Spring Cloud和Dubbo整合开发笔记(1)
-
[Spring-Cloud-Alibaba] Sentinel 规则持久化