当前位置: 首页 > news >正文

Linux 环境下使用 Docker 部署 Seata 1.7.1 (图文教程)

目录

    • 前言
    • 环境准备
    • 创建数据库
    • 安装 Seata
      • 下载镜像
      • 自定义配置文件
      • 自定义配置
      • 启动 Seata
    • 开源项目
      • 微服务商城项目
    • 前后端分离项目
    • 联系我

前言

本篇参考 Seata 官方部署文档 在 Linux 环境通过 Docker 部署 Seata 1.7.1 版本,以及为 youlai-mall 开源商城版本的升级做好准备工作。

环境准备

版本IP端口安装部署教程
操作系统Linux(CentOS 7.9)//搭建Linux虚拟机
数据库MySQL 8.0.27192.168.10.213306Linux 安装 MySQL8
注册配置中心Nacos 2.2.3192.168.10.228848、9848Linux 部署 Nacos 2.2.3
分布式事务Seata 1.7.1192.168.10.237091,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.configseata.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 已成功注册。

开源项目

微服务商城项目

GithubGitee
开源组织有来开源组织有来开源组织
后端youlai-mall 📖youlai-mall 📖
前端mall-admin🌎mall-admin 🌎
移动端mall-app 🌎mall-app 🌎

前后端分离项目

GithubGitee
开源组织有来开源组织有来开源组织
后端youlai-boot 📖youlai-boot 📖
前端vue3-element-admin 🌎vue3-element-admin 🌎

联系我

如果您在阅读本文时有任何疑问或需要进一步讨论,可以通过开源组织首页提供的联系方式与我取得联系。我很乐意提供技术支持,并欢迎您加入我们的技术交流群。期待与您一同分享和探讨技术话题!
有来开源组织:https://gitee.com/youlaiorg

http://www.lryc.cn/news/177472.html

相关文章:

  • Aruba CX交换机 VSF配置
  • 使用ElementUI结合Vue完善主页的导航菜单和书籍管理以及后台数据分页查询
  • 子序列问题集合
  • idea中提示:error has occurred, please check your installation and try again
  • MySQL - 关于约束类型和作用的介绍
  • 【2023集创赛】芯原杯一等奖作品:基于芯原DSP核的智能语音SoC设计
  • 代理IP与Socks5代理在跨界电商、爬虫、游戏和网络安全中的应用
  • DDS信号发生器Verilog波形发生器FPGA
  • 基于springboot实现二手交易平台管理系统演示【项目源码】分享
  • 一个链接分享自制的产品图册
  • 2023工博会 | 上海添力网络营销公司 | 助力工业品线上推广
  • React实现多图片预览功能、预览图上下张切换(实战示例)
  • 【NLP的Python库(04/4)】:Flair
  • Vue框架学习大纲
  • 利用PPT导出一张高清图的方法,office与WPS只需要使用一个即可,我使用的是office。
  • 2023年【四川省安全员B证】最新解析及四川省安全员B证模拟考试
  • 某瑞集团安全技术研发岗位面试
  • 学习笔记|ADC反推电源电压|扫描按键(长按循环触发)|课设级实战练习|STC32G单片机视频开发教程(冲哥)|第十八集:ADC实战
  • 2020 款凯迪拉克 XT5 车发动机加速异响
  • 【AI视野·今日CV 计算机视觉论文速览 第255期】Wed, 27 Sep 2023
  • Java应用生产Full GC或者OOM问题如何定位
  • Data processing flow
  • CAP理论与BASE理论
  • DRM全解析 —— ADD_FB2(3)
  • 【Java】SpringMVC ResponseBodyAdvice详解
  • python常见面试题五
  • SpringBoot结合Vue.js+axios框架实现增删改查功能+网页端实时显示数据库数据(包括删除多条数据)
  • 曙光亮相工博会,发布首款国产高端工业实时仿真计算系统
  • 「大数据-2.0」安装Hadoop和部署HDFS集群
  • 文档在线预览word、pdf、excel文件转html以实现文档在线预览