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.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
相关文章:
Linux 环境下使用 Docker 部署 Seata 1.7.1 (图文教程)
目录 前言环境准备创建数据库安装 Seata下载镜像自定义配置文件自定义配置启动 Seata 开源项目微服务商城项目 前后端分离项目联系我 前言 本篇参考 Seata 官方部署文档 在 Linux 环境通过 Docker 部署 Seata 1.7.1 版本,以及为 youlai-mall 开源商城版本的升级做…...
Aruba CX交换机 VSF配置
目前 Aruba CX 交换机中的 6300F 和 6300M 支持 VSF 功能,要求同型号堆叠。 6300 交换机仅仅最后 4 个 SFP56 端口支持 VSF link 6200F : all uplink ports with 10G speed can be configured as VSF link 6200F: VSF allows stacks to be formed using any combin…...
使用ElementUI结合Vue完善主页的导航菜单和书籍管理以及后台数据分页查询
目录 动态树 数据表 案列 书籍管理 动态树 动态树(Dynamic tree)是一种数据结构,它可以在树中动态地插入、删除和修改节点。与静态树不同,静态树的节点是固定的,一旦构建完成就无法再进行修改。而动态树可以在运行时…...
子序列问题集合
子序列问题 删除一次得到的最大和最大子数组和最长公共子序列:最长上升子序列(要输出序列,和最大长度)1.dp2.贪心二分 导弹拦截 (最长上升/下降子序列长度) 删除一次得到的最大和 class Solution { public:…...
idea中提示:error has occurred, please check your installation and try again
目录 报错原因解决总结 报错 idea中提示:error has occurred, please check your installation and try again 原因 1.起初我是把一个运行正常的java程序,放到了src下,新建的一个包(包名为java.first)中,…...
MySQL - 关于约束类型和作用的介绍
约束的概念:约束是作用于表中字段上的规则,用于限制存储在表中的数据。 约束的作用:用于保证数据库中数据的正确性、完整性和一致性。 约束分类: 约束类型作用关键字非空约束限制该字段的数据不能为nullnot null唯一约束保证该…...
【2023集创赛】芯原杯一等奖作品:基于芯原DSP核的智能语音SoC设计
本文为2023年第七届全国大学生集成电路创新创业大赛(“集创赛”)芯原杯一等奖作品分享,参加极术社区的【有奖征集】分享你的2023集创赛作品,秀出作品风采,分享2023集创赛作品扩大影响力,更有丰富电子礼品等…...
代理IP与Socks5代理在跨界电商、爬虫、游戏和网络安全中的应用
在数字化时代,网络工程师们需要不断应对各种技术挑战,以满足跨界电商、爬虫、游戏和网络安全领域的需求。本文将聚焦于代理IP和Socks5代理,探讨它们在这些领域中的重要应用和影响。 1. 代理IP:跨越地域的电商战略 跨界电商已经成…...
DDS信号发生器Verilog波形发生器FPGA
名称:DDS信号发生器Verilog波形发生器 软件:Quartus 语言:Verilog 要求: 1.可产生正弦波,锯齿波,三角波,方波4种波形,频率可调 2.具有波形选择、起动、停止功能。 代码下载&…...
基于springboot实现二手交易平台管理系统演示【项目源码】分享
基于springboot实现二手交易平台管理系统演示 java简介 Java语言是在二十世纪末由Sun公司发布的,而且公开源代码,这一优点吸引了许多世界各地优秀的编程爱好者,也使得他们开发出当时一款又一款经典好玩的小游戏。Java语言是纯面向对象语言之…...
一个链接分享自制的产品图册
在商业中我们都需要一本产品册展现自家的产品特点,方便更多的人群挑选产品。但是纸质版的消费量最大,还不好存放和管理。不妨试试制作一本电子版的产品图册,无论是新手还是有经验者都能轻松上手 接下来给大家分享这款网站---FLBOOK在线制作…...
2023工博会 | 上海添力网络营销公司 | 助力工业品线上推广
2023年9月23日,为期五天的工博会正式落下帷幕。本届工博会不仅有数量,更加有质量,国内外企业纷纷拿出看家本领,围绕着“绿色低碳”、“数字化转型”、“数字经济”、“科技创新”、“智能制造”等主题进行推陈出新。 本次工博会也…...
React实现多图片预览功能、预览图上下张切换(实战示例)
前言 在React项目中,展示和预览多张图片是一种常见的需求。本篇帖子将介绍如何使用React和antd库来实现这一功能,并探讨如何在预览模态框中切换到前一张或后一张图片。 背景 我们将以一个OCR图像列表展示的示例来演示代码的运用。假设我们有一个OCR系…...
【NLP的Python库(04/4)】:Flair
一、说明 Flair是一个现代的NLP库。从文本处理到文档语义,支持所有核心 NLP 任务。Flair使用现代转换器神经网络模型来完成多项任务,并结合了其他Python库,可以选择特定的模型。其清晰的API和注释文本的数据结构,以及多语言支持&a…...
Vue框架学习大纲
Vue.js 是一个构建用户界面的框架,尤其是单页面应用。以下是一些主要基于 Vue 2.x 的版本必须了解的 Vue.js基本知识点和特性: Vue 实例: 创建一个 Vue 实例是开始使用 Vue 的第一步。 var vm new Vue({// 选项 });数据绑定: Vue 提供了非常直观的数据绑…...
利用PPT导出一张高清图的方法,office与WPS只需要使用一个即可,我使用的是office。
利用PPT导出一张高清图的方法,office与WPS只需要使用一个即可,我使用的是office。 1,PPT的功能拓展来解决导出高清图片方法1.1,PPT功能拓展—>安装插件: 2,各种方法导出图片效果显示:2.1&…...
2023年【四川省安全员B证】最新解析及四川省安全员B证模拟考试
题库来源:安全生产模拟考试一点通公众号小程序 四川省安全员B证最新解析考前必练!安全生产模拟考试一点通每个月更新四川省安全员B证模拟考试题目及答案!多做几遍,其实通过四川省安全员B证模拟考试题很简单。 1、【多选题】5.5kW…...
某瑞集团安全技术研发岗位面试
本文由掌控安全学院 - sbhglqy 投稿 一、自我介绍 阿吧阿吧,不多说 二、就ctf比赛经历方面提些问题 面试官:ctf打了多久了 我:两三年了。 面试官:得过什么奖项没有 我:本科的时候得过一个校一等奖。 面试官&#x…...
学习笔记|ADC反推电源电压|扫描按键(长按循环触发)|课设级实战练习|STC32G单片机视频开发教程(冲哥)|第十八集:ADC实战
文章目录 1.ADC反推电源电压测出Vref引脚电压的意义?手册示例代码分析复写手册代码Tips:乘除法与移位关系为什么4096后面还有L 2.ADC扫描按键(长按循环触发)长按触发的实现 3.实战小练1.初始状态显示 00 - 00 - 00,分别作为时,分,…...
2020 款凯迪拉克 XT5 车发动机加速异响
故障现象 一辆2020款凯迪拉克XT5车,搭载LSY发动机,累计行驶里程约为8万km。车主反映,加速时发动机有明显异响。 故障诊断 接车后试车,起动发动机,发动机怠速运转平稳;打开发动机室盖,能够听到轻…...
【AI视野·今日CV 计算机视觉论文速览 第255期】Wed, 27 Sep 2023
AI视野今日CS.CV 计算机视觉论文速览 Wed, 27 Sep 2023 (showing first 100 of 103 entries) Totally 100 papers 👉上期速览✈更多精彩请移步主页 Daily Computer Vision Papers Generating Visual Scenes from Touch Authors Fengyu Yang, Jiacheng Zhang, Andre…...
Java应用生产Full GC或者OOM问题如何定位
1 引言 生产应用服务频繁Full GC却无法释放内存,甚至可能OOM,这种情况很有可能是内存泄露或者堆内存分配不足,此时需要dump堆信息来定位问题,查看是哪些地方内存泄漏。 Dump文件也称为内存转储文件或内存快照文件,是…...
Data processing flow
1. 找出第一年的address,有lat和long,自动生成 csv_log_lat_county.ipynb import csv from geopy.geocoders import Nominatim from geopy.exc import GeocoderTimedOutgeolocator Nominatim(user_agent"my-app") data_csv r"D:/year…...
CAP理论与BASE理论
分布式领域CAP理论: Consistency(一致性), 数据一致更新,所有数据变动都是同步的Availability(可用性), 好的响应性能Partition tolerance(分区容错性) 可靠性定理:任何分布式系统只可同时满足二点,没法三者兼顾。忠告࿱…...
DRM全解析 —— ADD_FB2(3)
接前一篇文章:DRM全解析 —— ADD_FB2(2) 本文参考以下博文: DRM驱动(四)之ADD_FB 特此致谢! 上一回围绕libdrm与DRM在Linux内核中的接口: DRM_IOCTL_DEF(DRM_IOCTL_MODE_ADDFB2,…...
【Java】SpringMVC ResponseBodyAdvice详解
目录 1. ResponseBodyAdvice 2. supports方法 3. beforeBodyWrite方法 4. 实践 1. ResponseBodyAdvice Spring MVC的ResponseBodyAdvice是Spring 4.1版本中引入的一个接口,它允许在Controller控制器中ResponseBody修饰的方法或ResponseEntity执行之后ÿ…...
python常见面试题五
解释 Python 中的列表推导式 (list comprehension)。 答:列表推导式是一种创建新列表的简洁方式。它可以在一行代码中通过对一个可迭代对象应用表达式和条件来生成新的列表。 解释 Python 中的时间复杂度和空间复杂度。 答:时间复杂度衡量算法运行时间的…...
SpringBoot结合Vue.js+axios框架实现增删改查功能+网页端实时显示数据库数据(包括删除多条数据)
本文适用对象:已有基础的同学,知道基础的SpringBoot配置和Vue操作。 在此基础上本文实现基于SpringBoot和Vue.js基础上的增删改查和数据回显、刷新等。 一、实时显示数据库数据 实现步骤: 第1步:编写动态请求响应类:…...
曙光亮相工博会,发布首款国产高端工业实时仿真计算系统
9月19日-23日,中科曙光亮相第23届中国国际工业博览会,并受邀于主论坛发表主题演讲,在工业权威会议上展示曙光领先的工业数字化技术与实践成果。展会期间,曙光重磅发布首款国产工业实时仿真计算系统,并展出多项工业数字…...
「大数据-2.0」安装Hadoop和部署HDFS集群
目录 一、下载Hadoop安装包 二、安装Hadoop 0. 安装Hadoop前的必要准备 1. 以root用户登录主节点虚拟机 2. 上传Hadoop安装包到主节点 3. 解压缩安装包到/export/server/目录中 4. 构建软链接 三、部署HDFS集群 0. 集群部署规划 1. 进入hadoop安装包内 2 进入etc目录下的hadoop…...
哪个网站做阿里首页模板/云计算培训
1、给出了一个序列,你需要处理如下两种询问。 "C a b c"表示给[a, b]区间中的值全部增加c (-10000 ≤ c ≤ 10000)。 "Q a b" 询问[a, b]区间中所有值的和。 2、线段树单点更新太费时,所以使用区间更新 3、 #include <cstdio>…...
jmail官方网站/怎么创建自己的网址
消费者和企业总想“以少获多”,并且总会这样做;这也在无形中推动了我们的市场发展,为技术创新者创造了无限机会。在系统领域,“以少获多”往往意味着“高度集成”。将更多功能集中到一个芯片中可以降低成本,使解决方案…...
网站怎么做备案变更/手机端网站优化
文章目录七层是什么?七层代码Entity层U层Facade层B层IDAL层Factory层DAL层七层遇到的问题:1.System.NullReferenceException:未将对象引用设置到对象的实例2.抽象工厂反射(未能加载文件或程序集 “DAL”或它的某一个依赖项。系统找…...
南阳河南网站建设/高平网站优化公司
https://www.cnblogs.com/shanhua-fu/p/9281040.html...
个人网站免费模板/怎么搭建属于自己的网站
2019独角兽企业重金招聘Python工程师标准>>> 一、在编码过程发现报错:Override is not allowed when implementing interface method 。 1、在project/module上,右键选择菜单“Open Module Settings” ; 2、选择Modules,修改“Lan…...
wordpress评论美化/如何做好精准营销
windows10下升级node.js和降级Nodejs_cheerileeyoki的博客-CSDN博客_win10 升级nodejs...