Seata是什么
这里引用官方解释
Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。
环境搭建
Nacos + Seata
Nacos
使用Nacos作为配置中心和注册中心
Seata支持多种配置方式(nacos、consul、apollo、etcd、zookeep、file),详看Seata官方文档
安装(Docker方式,其他方式见Nacos官方文档):
- 导入Nacos所需的表
去github下载安装包,一般选最新的就行,地址
解压进入conf目录,将nacos-mysql.sql导入数据库
-
Docker执行
docker run \
--name nacos \
-d \
-p 8848:8848 -p 9848:9848 -p 9555:9555 \
--privileged=true \
--restart=always \
-e JVM_XMS=256m \
-e JVM_XMX=256m \
-e MODE=standalone \
-e PREFER_HOST_MODE=hostname \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=127.0.0.1 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_USER=wangguyu \
-e MYSQL_SERVICE_PASSWORD=wangguyu \
-e MYSQL_SERVICE_DB_NAME=nacos \
nacos/nacos-server
参数解释:
- MODE:单机模式
- SPRING_DATASOURCE_PLATFORM:mysql支持
- MYSQL_SERVICE_HOST:mysql地址
- MYSQL_SERVICE_PORT:mysql端口
- MYSQL_SERVICE_USER:mysql用户名
- MYSQL_SERVICE_PASSWORD:mysql密码
- MYSQL_SERVICE_DB_NAME:mysql数据库名
Seata
Seata需要提供服务端给客户端连接,有两种安装方式:
此处使用官方软件包安装:
- 解压安装包,修改nacos地址
进入conf目录,参考application.example.yml修改配置文件,连接nacos
-
命令启动
进入bin目录,执行以下命令
sh seata-server.sh -p 8091 -h 127.0.0.1 -m file
参数说明:
-p:监听端口
-h:seata在注册中心显示的地址(内网访问可忽略,如果seata服务端在外网,客户端在内网,切记配置此参数为公网地址)
-m:存储模式(支持file、db)
验证
登录nacos控制台,在菜单 服务管理→ 服务列表 中,看到seata服务注册成功。
详情页的ip显示正常,则证明seata服务启动成功。
坑
当前时间2022年7月4日,Seata在github的releases页最新版本是v1.5.1
此版本有bug,seata-server.sh命令使用-h参数无效
详见bugfix: fix missing command line args
修复了bug,但是半个月了都不发布release,牛逼,浪费了我几个小时。
修复方法:
按下图修改bin/seata-server.sh文件(红框部分)
使用
参考官方demo
因为直接使用的官方demo代码,只是修改了配置,此处就不多赘述。
注意事项
我的环境是Nacos和Seata服务端都放在云服务器,所以启动Seata服务端的时候,要使用-h参数指定外网ip,否则Seata客户端无法连接服务端