简介
seata是阿里提供的分布式事务的解决方案,nacos是阿里提供的分布式注册中心,分布式配置中心解决方案。本文旨在介绍seata如何使用nacos作为配置中心。(AT模式)
nacos官网nacos.io, seata官网seata.io, nacos的快速开始可以上官网看,几分钟就好了。
seata快速开始
seata整体是cs架构,第一步下载的软件就是s端,我们自己建项目然后pom里整合c端和s端进行通信。
第一步:seata下载:seata
我选择的是1.2.0版本binary, 你也可以不下载,我附件资料里有
第二步:配置seata的数据库
account,order,storage表都有undo_log表,这是用来处理分布式事务回滚的,存的是逆向sql。
seata有三张表全局事务表,分支事务表,全局锁表
这些sql我后面会附一个链接
第三步:修改seata server端启动所需的配置文件
seata binary下载好如下图:
进入conf把registry.conf修改成如下(file.conf不需要修改,因为本文seata的启动所需要的配置全从nacos拉取)
registry {
# file 、nacos 、eureka、redis、zk、consul、etcd3、sofa
type = "nacos"
nacos {
application = "seata-server"
serverAddr = "localhost"
namespace = ""
cluster = "default"
username = ""
password = ""
}
}
config {
# file、nacos 、apollo、zk、consul、etcd3
type = "nacos"
nacos {
serverAddr = "localhost"
namespace = ""
group = "SEATA_GROUP"
username = ""
password = ""
}
}
第四步:把seata启动所需配置上传到nacos配置中心
精简后的配置config.txt如下(数据库地址用户名密码需要修改成自己的)
service.vgroupMapping.my_test_tx_group=default
service.default.grouplist=127.0.0.1:8091
store.mode=db
store.db.datasource=druid
store.db.dbType=mysql
store.db.driverClassName=com.mysql.cj.jdbc.Driver
store.db.url=jdbc:mysql://192.168.238.100:3306/seata?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC
store.db.user=root
store.db.password=root
store.db.minConn=5
store.db.maxConn=30
store.db.globalTable=global_table
store.db.branchTable=branch_table
store.db.lockTable=lock_table
store.db.queryLimit=100
store.db.maxWait=5000
conf文件夹下有一个nacos-config.sh, 右键git bash here ,运行sh nacos-config.sh就可以把上面配置导入到nacos中(默认ip为localhost:8848), nacos控制台地址:http://127.0.0.1:8848/nacos/index.html
注:sh nacos-config.sh -h 192.168.133.222 -p 8848 -g SEATA_GROUP -t 64dab1d0-8416-4a8d-a92c-927afb212a7e
第五步:启动seata server端
bin 目录下双击seata-server.bat
或者进入bin 执行 .\seata-server.bat -p 8091 -h 127.0.0.1 -m db
报错了的话就去bat文件修改相应报错地方
第六步:启动分布式项目
解压seata源码.rar,idea导入该项目,等它自己编译好,去修改account,order,storage三个分布式模块的mysql数据源再分别启动三个项目,浏览器访问http://localhost:4001/order/create