哪里有做网站设计个人免费自助建站网站
目录
- 前言
- 环境准备
- 创建数据库
- 安装 Seata
- 下载镜像
- 自定义配置文件
- 自定义配置
- 启动 Seata
- 开源项目
- 微服务商城项目
- 前后端分离项目
- 联系我
前言
本篇参考 Seata 官方部署文档 在 Linux 环境通过 Docker 部署 Seata
1.7.1 版本,以及为 youlai-mall 开源商城版本的升级做好准备工作。
环境准备
版本 | IP | 端口 | 安装部署教程 | |
---|---|---|---|---|
操作系统 | Linux(CentOS 7.9) | / | / | 搭建Linux虚拟机 |
数据库 | MySQL 8.0.27 | 192.168.10.21 | 3306 | Linux 安装 MySQL8 |
注册配置中心 | Nacos 2.2.3 | 192.168.10.22 | 8848、9848 | Linux 部署 Nacos 2.2.3 |
分布式事务 | Seata 1.7.1 | 192.168.10.23 | 7091,8091 | / |
创建数据库
访问 https://github.com/seata/seata/tree/1.7.1/script/server/db 获取 mysql.sql 脚本
-- 1. 执行语句创建名为 seata 的数据库
CREATE DATABASE seata DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_general_ci;-- 2.执行脚本完成 Seata 表结构的创建
use seata;-- https://github.com/seata/seata/blob/1.7.1/script/server/db/mysql.sql
-- -------------------------------- 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_status_gmt_modified` (`status` , `gmt_modified`),KEY `idx_transaction_id` (`transaction_id`)
) ENGINE = InnoDBDEFAULT CHARSET = utf8mb4;-- 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 (`branch_id`),KEY `idx_xid` (`xid`)
) ENGINE = InnoDBDEFAULT CHARSET = utf8mb4;-- the table to store lock data
CREATE TABLE IF NOT EXISTS `lock_table`
(`row_key` VARCHAR(128) NOT NULL,`xid` VARCHAR(128),`transaction_id` BIGINT,`branch_id` BIGINT NOT NULL,`resource_id` VARCHAR(256),`table_name` VARCHAR(32),`pk` VARCHAR(36),`status` TINYINT NOT NULL DEFAULT '0' COMMENT '0:locked ,1:rollbacking',`gmt_create` DATETIME,`gmt_modified` DATETIME,PRIMARY KEY (`row_key`),KEY `idx_status` (`status`),KEY `idx_branch_id` (`branch_id`),KEY `idx_xid` (`xid`)
) ENGINE = InnoDBDEFAULT CHARSET = utf8mb4;CREATE TABLE IF NOT EXISTS `distributed_lock`
(`lock_key` CHAR(20) NOT NULL,`lock_value` VARCHAR(20) NOT NULL,`expire` BIGINT,primary key (`lock_key`)
) ENGINE = InnoDBDEFAULT CHARSET = utf8mb4;INSERT INTO `distributed_lock` (lock_key, lock_value, expire) VALUES ('AsyncCommitting', ' ', 0);
INSERT INTO `distributed_lock` (lock_key, lock_value, expire) VALUES ('RetryCommitting', ' ', 0);
INSERT INTO `distributed_lock` (lock_key, lock_value, expire) VALUES ('RetryRollbacking', ' ', 0);
INSERT INTO `distributed_lock` (lock_key, lock_value, expire) VALUES ('TxTimeoutCheck', ' ', 0);
安装 Seata
下载镜像
访问 Seata Docker镜像标签页面 获取最新的Seata Docker镜像下载链接。
docker pull seataio/seata-server:1.7.1
自定义配置文件
自定义配置文件需要通过挂载文件的方式实现,将宿主机上的 application.yml
挂载到容器中相应的目录。
按照官方提供的方案,创建临时容器,将 resources 目录文件拷贝到宿主机,再删除临时容器,典型的过河拆桥。
宿主机创建存放 seata 配置的目录
mkdir -p /opt/seata/config
启动临时容器
docker run -d -p 8091:8091 -p 7091:7091 --name seata-server seataio/seata-server:1.7.1
拷贝临时容器的配置至宿主机
docker cp seata-server:/seata-server/resources/. /opt/seata/config
完成之后删除临时容器(过河拆桥)
docker rm -f seata-server
自定义配置
上面通过自定义配置文件将 Seata 应用的配置拷贝到宿主机的 /opt/seata/config
目录下,方便接下来自定义修改配置。
因为配置和注册中心类型选用的是 Nacos ,所以需要调整 /opt/seata/config/application.yml
配置文件的 seata.config
和 seata.registry
两个节点(参考同目录下示例配置application.example.yml
),其他默认无需修改。修改后的配置如下:
# /opt/seata/config/application.yml
seata:# 配置中心-nacosconfig:type: nacos # support: nacos, consul, apollo, zk, etcd3nacos:server-addr: 192.168.10.22:8848namespace:group: SEATA_GROUPusername: password: context-path:data-id: seataServer.properties# 注册中心-nacosregistry:type: nacos # support: nacos, eureka, redis, zk, consul, etcd3, sofanacos:application: seata-serverserver-addr: 192.168.10.22:8848group: SEATA_GROUPnamespace:cluster: default # TC 集群名称,下文 Seata 客户端中配置事务分组名和集群名映射使用username: password:
192.168.179.22
: 配置中心 Nacos 的IP地址
Seata 使用 Nacos 作为配置中心,所以需要将 Seata 配置中心的配置 config.txt 文件导入 Nacos 。
本篇使用 MySQL 作为 Seata 的存储方案,所以需要修改 seataServer.properties
配置文件中的存储模式和数据库连接配置,具体修改如下:
# seataServer.properties# 配置存储模式为: db(数据库)
store.mode=db
store.lock.mode=db
store.session.mode=db
# 数据库连接配置
store.db.url=jdbc:mysql://192.168.10.21:3306/seata?useUnicode=true&rewriteBatchedStatements=true
store.db.user=root
store.db.password=123456
192.168.10.21
: MySQL 服务 IP 地址
启动 Seata
执行以下命令来创建并运行 seata 容器
docker run -d \--name seata-server \--restart=always \-p 8091:8091 \-p 7091:7091 \-e SEATA_IP=192.168.10.23 \-v /opt/seata/config:/seata-server/resources \seataio/seata-server:1.7.1
192.168.10.23
: seata-server 所在宿主机的 IP,该IP用于向注册中心注册时使用
访问 Nacos 控制台,看到 seata-server 已成功注册。
开源项目
微服务商城项目
Github | Gitee | |
---|---|---|
开源组织 | 有来开源组织 | 有来开源组织 |
后端 | youlai-mall 📖 | youlai-mall 📖 |
前端 | mall-admin🌎 | mall-admin 🌎 |
移动端 | mall-app 🌎 | mall-app 🌎 |
前后端分离项目
Github | Gitee | |
---|---|---|
开源组织 | 有来开源组织 | 有来开源组织 |
后端 | youlai-boot 📖 | youlai-boot 📖 |
前端 | vue3-element-admin 🌎 | vue3-element-admin 🌎 |
联系我
如果您在阅读本文时有任何疑问或需要进一步讨论,可以通过开源组织首页提供的联系方式与我取得联系。我很乐意提供技术支持,并欢迎您加入我们的技术交流群。期待与您一同分享和探讨技术话题!
有来开源组织:https://gitee.com/youlaiorg