目录
对应多进程的分布式系统来说,本地事务已不能保证数据集的一致性,由此我们可以使用Seata分布式事务来解决。
一、Seata+Mysql+Nacos进行部署
Docker安装Seata见我的这篇博客:Docker 部署微服务架构的各项环境_Dragon Wu的博客-CSDN博客_基于docker的微服务架构
本次案例基于Linux环境Seata1.3.0+Mysql8来实现
由于分布式架构需要支持集群高可用所以这里需要用到mysql。
这里我们将seata对于版本的script文件夹放入对应的目录中,便于后续使用:
seata/script at v1.3.0 · seata/seata · GitHub

1、修改Seata的配置文件
进入Seata的目file.conf

修改配置如下:数据库要求必须为5.7以上版本。


2、创建数据库
数据要求5.7以上版本

运行对应版本的脚本:
seata/script/server/db at v1.3.0 · seata/seata · GitHub
-- -------------------------------- The script used when storeMode is 'db' --------------------------------
-- the table to store GlobalSession data
CREATE TABLE IF NOT EXISTS `global_table`
(
`xid` VARCHAR(128) NOT NULL,
`transaction_id` BIGINT,
`status` TINYINT NOT NULL,
`application_id` VARCHAR(32),
`transaction_service_group` VARCHAR(32),
`transaction_name` VARCHAR(128),
`timeout` INT,
`begin_time` BIGINT,
`application_data` VARCHAR(2000),
`gmt_create` DATETIME,
`gmt_modified` DATETIME,
PRIMARY KEY (`xid`),
KEY `idx_gmt_modified_status` (`gmt_modified`, `status`),
KEY `idx_transaction_id` (`transaction_id`)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8;
-- the table to store BranchSession data
CREATE TABLE IF NOT EXISTS `branch_table`
(
`branch_id` BIGINT NOT NULL,
`xid` VARCHAR(128) NOT NULL,
`transaction_id` BIGINT,
`resource_group_id` VARCHAR(32),
`resource_id` VARCHAR(256),
`branch_type` VARCHAR(8),
`status` TINYINT,
`client_id` VARCHAR(64),
`application_data` VARCHAR(2000),
`gmt_create` DATETIME(6),
`gmt_modified` DATETIME(6),
PRIMARY KEY (`branc
Seata分布式事务实战:部署与MySQL+Nacos案例解析

最低0.47元/天 解锁文章
1362

被折叠的 条评论
为什么被折叠?



