我们先从官网下载seata-server,这里下载的是seata-server-1.0.0.zip
,下载地址:https://github.com/seata/seata/releases
这里我们使用Nacos作为注册中心,Nacos的安装及使用可以参考:Spring Cloud入门-Nacos实现注册和配置中心(Hoxton版本)
解压seata-server安装包到指定目录,修改conf
目录下的file.conf
配置文件,主要修改自定义事务组名称,事务日志存储模式为db
及数据库连接信息;
service {
#transaction service group mapping
#修改事务组名称为:my_test_tx_group,和客户端自定义的名称对应
vgroup_mapping.my_test_tx_group = “default”
#only support when registry.type=file, please don’t set multiple addresses
default.grouplist = “127.0.0.1:8091”
#disable seata
disableGlobalTransaction = false
}
transaction log store, only used in seata-server
store {
store mode: file、db
#修改此处将事务信息存储到数据库中
mode = “db”
file store property
file {
store location dir
dir = “sessionStore”
}
database store property
db {
the implement of javax.sql.DataSource, such as DruidDataSource(druid)/BasicDataSource(dbcp) etc.
datasource = “dbcp”
mysql/oracle/h2/oceanbase etc.
db-type = “mysql”
driver-class-name = “com.mysql.cj.jdbc.Driver”
#修改数据库连接地址
url = “jdbc:mysql://127.0.0.1:3306/seata-server?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&allowMultiQueries=true&useSSL=false&tinyInt1isBit=false&serverTimezone=GMT%2B8”
#修改数据库用户名
user = “root”
#修改数据库密码
password = “root”
}
}
由于我的MySQL是8.0以上的版本,所以驱动需要跟换为8.0以上的,同时修改file.conf
的driver-class-name配置
driver-class-name = “com.mysql.cj.jdbc.Driver”
由于我们使用了db模式存储事务日志,所以我们需要创建一个seata-server数据库,建表sql在seata-server的/conf/db_store.sql
中;
修改conf
目录下的registry.conf
配置文件,指明注册中心为nacos
,及修改nacos
连接信息即可;
registry {
file 、nacos 、eureka、redis、zk、consul、etcd3、sofa
type = “nacos” #改为nacos
nacos {
serverAddr = “localhost:8848” #改为nacos的连接地址
namespace = “”
cluster = “default”
}
}
先启动Nacos,再使用seata-server中/bin/seata-server.bat
文件启动seata-server。
创建业务数据库
-
seata-order:存储订单的数据库;
-
seata-storage:存储库存的数据库;
-
seata-account:存储账户信息的数据库。
初始化业务表
order表
CREATE TABLE order
(
id
bigint(11) NOT NULL AUTO_INCREMENT,
user_id
bigint(11) DEFAULT NULL COMMENT ‘用户id’,
product_id
bigint(11) DEFAULT NULL COMMENT ‘产品id’,
count
int(11) DEFAULT NULL COMMENT ‘数量’,
money
decimal(11,0) DEFAULT NULL COMMENT ‘金额’,
PRIMARY KEY (id
)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;
ALTER TABLE seata-order
.order
ADD COLUMN status
int(1) DEFAULT NULL COMMENT ‘订单状态:0:创建中;1:已完结’ AFTER money
;