准备环境
-
安装mysql
-
下载seata
https://download.fastgit.org/seata/seata/releases/download/v1.4.1/seata-server-1.4.1.zip
-
下载nacos
https://download.fastgit.org/alibaba/nacos/releases/download/2.0.0/nacos-server-2.0.0.zip
启动nacos
-
解压nacos安装包
-
初始化数据库
新建数据库nacos_config,然后执行conf/nacos-mysql.sql中的脚本,如图
-
修改配置文件
#*************** Config Module Related Configurations ***************# ### If use MySQL as datasource: spring.datasource.platform=mysql ### Count of DB: db.num=1 ### Connect URL of DB: db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC db.user.0=root db.password.0=admin123
-
启动nacos
startup.cmd -m standalone
-
登录nacos web界面
打开 http://127.0.0.1:8848/nacos
用户名密码为nacos/nacos
启动seata
-
解压seata安装包
-
初始化数据库
新建数据库seata
数据库脚本位于源码目录下script/server/db/mysql.sql
执行成功后生成3个表
-
修改配置文件
conf/registry.conf
把registry和config对象下面的type值改为nacos
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 = "" cluster = "default" username = "" password = "" } } config { # file、nacos 、apollo、zk、consul、etcd3 type = "nacos" nacos { serverAddr = "127.0.0.1:8848" namespace = "" group = "SEATA_GROUP" username = "" password = "" } }
conf/file.conf
修改mode值为db
设置db对象下面的数据库属性(url、user、password)
store { ## store mode: file、db、redis mode = "db" ## database store property db { ## the implement of javax.sql.DataSource, such as DruidDataSource(druid)/BasicDataSource(dbcp)/HikariDataSource(hikari) etc. datasource = "druid" ## mysql/oracle/postgresql/h2/oceanbase etc. dbTy pe = "mysql" driverClassName = "com.mysql.jdbc.Driver" url = "jdbc:mysql://127.0.0.1:3306/seata" user = "root" password = "admin123" minConn = 5 maxConn = 100 globalTable = "global_table" branchTable = "branch_table" lockTable = "lock_table" queryLimit = 100 maxWait = 5000 } }
-
启动seata server
bin/seata-server.bat
-
查看nacos的服务列表
生成seata-server服务
运行sample
-
下载sample代码
git clone https://github.com/seata/seata-samples
-
导入IDEA
准备运行springboot-mybatis的样例
几个project的规划如下
项目 | 端口 | 说明 |
---|---|---|
sbm-common-service | / | 公共方法 |
sbm-storage-service | 8081 | 仓库应用 |
sbm-order-service | 8082 | 订单应用 |
sbm-account-service | 8083 | 账户应用 |
sbm-business-service | 8084 | 业务应用,购物API的入口 |
-
执行sql脚本
脚本为sql/all_in_one.sql
可以复制内容放到navicat中直接执行
数据表如下
数据库 表 说明 db_account account_tbl 账户表 db_order order_tbl 订单表 db_storage storage_tbl 仓库表 -
修改所有应用的数据库连接属性
spring: datasource: type: com.alibaba.druid.pool.DruidDataSource driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://127.0.0.1:3306/db_account?useSSL=false&serverTimezone=UTC username: root password: admin123
-
启动分布式应用
分别启动
- sbm-storage-service
- sbm-order-service
- sbm-account-service
- sbm-business-service
-
调用购物接口
浏览器访问 http://localhost:8084/api/business/purchase/commit
返回true表示购物成功