seata容器部署nacos注册配置中心、db存储实践记录

server/2024/9/18 12:28:30/ 标签: 分布式事务, nacos, seata, docker

seata容器部署nacos注册&配置中心、db存储实践记录

  • 说明
  • seata容器初步部署(可跳过)
    • seata初部署
    • 获取配置文件
    • springboot简单集成seata测试
  • seata使用nacos注册中心、db存储
    • 环境准备
      • 准备nacos配置中心配置
      • 准备Mysql数据库
    • seata配置nacos注册中心
    • 准备docker-compose.yaml文件
    • 启动seata容器

说明

  • 环境准备:安装有docker环境的linux服务器
  • 提示:建议docker配置国内加速镜像+nacos服务
  • seata版本:2.0.0
  • 如果你使用的是seata 2.0.0可以直接跳过 seata容器初步部署进入 seata使用nacos注册中心、db存储部分阅读

seata_6">seata容器初步部署(可跳过)

  • 这里给出seata容器初步部署的教程的目的是:避免不同seata版本的配置文件的差异,导致配置错误,进而seata应用无法正常运行。
  • 建议使用和使用的seata兼容的配置文件,运行seta程序。

seata_9">seata初部署

  1. 编写/opt/1panel/apps/seata/docker-compose.yaml配置文件(这里的目录可以自定义,这里由于作者安装有1panel面板,为了方便统一管理容器所以放在此目录下)
version: "3"
services:seata-server:image: seataio/seata-server:latesthostname: seata-servercontainer_name: seataports:- "8091:8091"- "7091:7091"environment:- SEATA_PORT=8091- TZ=Asia/Shanghai
  1. 启动seata容器
# 进入compose文件目录
cd /opt/1panel/apps/seata
# 部署seata
docker-compose up -d

获取配置文件

  • 存放配置文件目录(可自定义),例如:/opt/1panel/apps/seata/data/conf/,同时获取
# 首先,获取Seata容器的ID或名称
docker ps
# 找到Seata容器的ID或名称后,运行以下命令将文件复制到容器外部
# <container_id>Seata容器的ID或名称
#<container_path> 要复制的文件路径
#<host_path>是要复制到的主机路径
docker cp <container_id>:<container_path> <host_path>
# 例如
docker cp seata:/seata-server/resources/application.yml /opt/1panel/apps/seata/data/conf/application.yml
docker cp seata:/seata-server/resources/application.example.yml /opt/1panel/apps/seata/data/conf/application.example.yml
  • 获取到该容器下的配置文件信息后,可以参照example.yaml进行自定义配置

seata_47">springboot简单集成seata测试

  1. 添加maven依赖
    <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-seata</artifactId>
    </dependency>
    
  2. 修改application.yaml配置事务组信息
# seata事务组配置
seata:tx-service-group: x-group # x-group可自定义名称注意和第四行中的组名称一致即可service:vgroup-mapping:x-group: default # 事务组和seata集群做关联grouplist:default: IP:8091 #seata集群对应的机器 IP使用服务器IP
  1. 集成测试结果:启动项目,查看seata容器日志,显示如下
digest=train-group,192.168.1.9,1714455823319
timestamp=1714455823319
authVersion=V4
vgroup=train-group
ip=192.168.1.9
'},channel:[id: 0x98ceee7f, L:/172.24.0.2:8091 - R:/192.168.1.9:13565],client version:2.0.0
13:43:44.623  INFO --- [rverHandlerThread_1_1_500] [rocessor.server.RegRmProcessor] [      onRegRmMessage]  [] : RM register success,message:RegisterRMRequest{resourceIds='jdbc:mysql://localhost:3306/train_member', version='2.0.0', applicationId='member', transactionServiceGroup='train-group', extraData='null'},channel:[id: 0x867118d6, L:/172.24.0.2:8091 - R:/192.168.1.9:13571],client version:2.0.0
13:43:47.735  INFO --- [ettyServerNIOWorker_1_3_8] [rocessor.server.RegTmProcessor] [      onRegTmMessage]  [] : TM register success,message:RegisterTMRequest{version='2.0.0', applicationId='business', transactionServiceGroup='train-group', extraData='ak=null
digest=train-group,192.168.1.9,1714455828017
timestamp=1714455828017
authVersion=V4
vgroup=train-group
ip=192.168.1.9
'},channel:[id: 0xed7931a0, L:/172.24.0.2:8091 - R:/192.168.1.9:13586],client version:2.0.0
13:43:49.125  INFO --- [rverHandlerThread_1_2_500] [rocessor.server.RegRmProcessor] [      onRegRmMessage]  [] : RM register success,message:RegisterRMRequest{resourceIds='jdbc:mysql://localhost:3306/train_business', version='2.0.0', applicationId='business', transactionServiceGroup='train-group', extraData='null'},channel:[id: 0xac930450, L:/172.24.0.2:8091 - R:/192.168.1.9:13589],client version:2.0.0

seatanacosdb_84">seata使用nacos注册中心、db存储

  • 注意:此过程保证nacos全程开启
  • seta官网 nacos注册中心,db存储指导

环境准备

nacos_88">准备nacos配置中心配置

  • 首先在nacos中创建命名空间seata-server,然后再该命名空间下配置seataServer.yaml文件
    在这里插入图片描述
    在这里插入图片描述
  • 设置Data ID为seataServer.yaml Group为SEATA_GROUP 配置格式设置为YAML 配置内容如下:
    在这里插入图片描述
store:mode: dbdb:datasource: druiddbType: mysqldriverClassName: com.mysql.cj.jdbc.DrivermaxConn: 20maxWait: 5000minConn: 1user: xxxpassword: xxxurl: jdbc:mysql://mysql_server_IP:3306/seata?useUnicode=true&characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=falsequeryLimit: 100globalTable: global_tablelockTable: lock_tablebranchTable: branch_table
  • 最后,点击保存

准备Mysql数据库

  • 创建数据库seata数据库名称可以自定义,注意和上一步的seataServer.yaml中的数据库名称保持一致即可。
  • seata 2.0.0 使用nacos注册中心,db存储的数据库sql文件如下:
  • seata官网文档 nacos注册中心,db存储说明文档打开**[建表脚本]**即可跳转到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);

seatanacos_193">seata配置nacos注册中心

  • 在服务器上可以手动创建并编辑application.yml文件。如果你使用1Panel可以尝试将存储路径设置为/opt/1panel/apps/seata/data/conf/application.yml方便容器的管理。
  • 配置文件内容如下:
server:port: 7091spring:application:name: seata-serverlogging:config: classpath:logback-spring.xmlfile:path: ${log.home:${user.home}/logs/seata}extend:logstash-appender:destination: 127.0.0.1:4560kafka-appender:bootstrap-servers: 127.0.0.1:9092topic: logback_to_logstashconsole:user:username: seatapassword: seata
seata:config:type: nacosnacos:server-addr: IP:8848 #请将IP修改为部署nacos服务的服务器IP 默认端口8848namespace: seata-server #和nacos命名空间一致group: SEATA_GROUPusername: nacospassword: nacosdata-id: seataServer.yaml #定义nacos配置文件名称,此文件配置db信息registry:type: nacosnacos:  application: seata-serverserver-addr: IP:8848  #请将IP修改为部署nacos服务的服务器IP 默认端口8848group: SEATA_GROUPnamespace: seata-servercluster: defaultusername: nacospassword: nacossecurity:secretKey: SeataSecretKey0c382ef121d778043159209298fd40bf3850a017tokenValidityInMilliseconds: 1800000ignore:urls: /,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.jpeg,/**/*.ico,/api/v1/auth/login,/version.json

dockercomposeyaml_245">准备docker-compose.yaml文件

  • /opt/1panel/apps/seata/目录下创建docker-compose.yaml文件
version: "3"
services:seata-server:image: seataio/seata-server:latesthostname: seata-servercontainer_name: seataports:- "8091:8091"- "7091:7091"environment:- SEATA_PORT=8091- TZ=Asia/Shanghai- SEATA_IP=linuxServer_IP  # linuxServer_IP:注册nacos时使用该地址,保证seata和其他应用正常通信- STORE_MODE=db #设置存储模式为databasevolumes:- ./data/conf/application.yml:/seata-server/resources/application.yml

seata_265">启动seata容器

# 进入compose文件目录
cd /opt/1panel/apps/seata
# 部署seata
docker-compose up -d

http://www.ppmy.cn/server/33197.html

相关文章

C语言中的goto语句

goto label; C 语言中的 goto 语句允许把控制无条件转移到同一函数内的被标记的语句。 #include <stdio.h> int main(){goto first;printf("我是你好\n");first:printf("nihao\n");second:printf("This is 2\n");return 0; } 使用goto会…

tensorflow可以使用GPU,而torch无法使用GPU

具有conda测试环境无意使用pip更新了tensorflow后&#xff0c;导致总报提示“could not load dynamic library ‘libnvinfer.so.7’”&#xff0c;经过查询后建议pip uninstall tensorflow后使用conda安装。 conda install tensorflow后解决了库动态加载问题&#xff0c;但是t…

qt for ios 之 ios app 发布

ios 发布&#xff0c;需要准备的发布证书&#xff0c;下面就来详细说说发布的一些流程&#xff1a; macOS中安装 appuploader可以管理证书和描述文件&#xff1a; 1&#xff09;创建 BundleID&#xff1a; 2&#xff09;创建证书&#xff1a; 这里创建两个证书&#xff1a; 一…

Node.js -- MongoDB

文章目录 1. 相关介绍2. 核心概念3. 命令行交互3.1数据库命令3.2 集合命令3.3 文档命令 4. 数据库应用场景4.1 新增4.2 删除4.3 更新4.4 查询 5. 图形化工具Robo 3T 1. 相关介绍 一、简介 Mongodb是什么 MongoDB是一个基于分布式文件存储的数据库&#xff0c;官方地址https://…

高并发支持的RSA文件加解密Spring Boot后端接口设计与实现(含 Java 接口实现代码)

随着互联网技术的飞速发展&#xff0c;数据安全已成为各类应用系统中不可或缺的一部分。特别是在高并发环境下&#xff0c;如何保证数据的安全性成为一个亟待解决的问题。本文将介绍如何在Spring Boot后端接口中实现高并发支持下的RSA文件加解密。 1. RSA算法简介 RSA算法是一…

Vue3人员选择组件封装

一、组件介绍 人员组件在各系统的应用都是比较广泛的&#xff0c;因此可以将其封装为可配置的人员组件&#xff0c;根据不同角色权限显示对应的人员供选择&#xff0c;代码目前只是一部分&#xff0c;需要源码的私聊。 二、直接上代码 use.vue 父组件 <div class&q…

gin-vue-blog 前后端分离项目(已经部署)

gin-vue-blog 前台&#xff1a; 后台&#xff1a; 1.数据库设计&#xff1a;https://blog.csdn.net/m0_73337964/article/details/138137629?spm1001.2014.3001.5501 2.RESTFUL API路由实现&#xff1a;https://blog.csdn.net/m0_73337964/article/details/138321631?spm1…

美国站群服务器的配置选择要点?

美国站群服务器的配置选择要点? 随着互联网的快速发展&#xff0c;站群已经成为许多网站主和企业选择的一种有效的网络推广方式。而在搭建站群时&#xff0c;选择适合的服务器配置是至关重要的。美国作为全球互联网技术的先锋之一&#xff0c;拥有先进的服务器设施和强大的网…

three.js 中 meshbasic.glsl 文件中的片源着色器的主函数解析

1. three.js 中 meshbasic.glsl 文件中的片源着色器的主函数解析 他的具体代码如下 void main() {#include <uv_vertex>#include <color_vertex>#include <morphcolor_vertex>#if defined ( USE_ENVMAP ) || defined ( USE_SKINNING )#include <beginno…

2024/5/2 C++五一

实现一个类&#xff0c;类中set函数&#xff0c;设置成员a的值&#xff0c;实现Sum函数&#xff0c;打印1到a的所有数字和&#xff0c;实现Product函数&#xff0c;打印1到a之间所有数字乘积&#xff0c;实现PrimeNum&#xff0c;输出1到a所有质数 #include <iostream> …

微隔离实施五步法,让安全防护转起来

前言 零信任的最核心原则→最小权限 安全的第一性原理→预防 零信任的最佳实践→微隔离 “零信任”这个术语的正式出现&#xff0c;公认是在2010年由Forrester分析师John Kindervag最早提出。时至今日&#xff0c;“零信任”俨然已成安全领域最热门的词汇&#xff0c;做安全…

力扣每日一题105:从前序与中序序列构造二叉树

题目 给定两个整数数组 preorder 和 inorder &#xff0c;其中 preorder 是二叉树的先序遍历&#xff0c; inorder 是同一棵树的中序遍历&#xff0c;请构造二叉树并返回其根节点。 示例 1: 输入: preorder [3,9,20,15,7], inorder [9,3,15,20,7] 输出: [3,9,20,null,null,1…

MongoDB详解

目录 一、MongoDB概述 1.MongoDB定义 2.MongoDB主要特点 2.1文档 2.2集合 2.3数据库 2.4数据模型 二、安装MongoDB 1.Windows安装MongoDB 1.1下载MongoDB 1.2安装MongoDB 1.3配置MongoDB 1.3.1可能遇到的问题 1.4安装一盒可视化工具 2.Linux安装MongoDB 2.1下载…

标贝语音识别技术在金融领域中的应用实例

随着语音识别技术与文本挖掘、自然语言处理等技术的不断融合&#xff0c;智能语音交互技术在金融领域中爆发了出巨大的应用潜力。标贝科技根据自身与金融领域合作的经验为大家梳理出以下几点智能语音识别技术在金融领域中的应用实例。 一、智能柜台服务 语音识别的主要功能就…

stable diffusion controlnet前处理中的图像resize

在SD controlnet应用中&#xff0c;一般都要先安装controlnet_aux&#xff0c;并在项目代码中import相关前处理模块&#xff0c;如下所示。 在对control image进行前处理&#xff08;比如找边缘&#xff0c;人体特征点&#xff09;之前&#xff0c;往往会图像进行resize&#x…

工业交换机的封装与防尘防水设计

随着工业自动化程度的不断提升&#xff0c;工业交换机作为工业网络的核心设备之一&#xff0c;其稳定可靠的通信性能对于生产环境至关重要。而在恶劣的工业环境中&#xff0c;尘土、湿气等因素常常会对设备的稳定性和持久性造成挑战。因此&#xff0c;工业交换机的封装设计和防…

Microsoft 365 for Mac(Office 365)v16.84正式激活版

office 365 for mac包括Word、Excel、PowerPoint、Outlook、OneNote、OneDrive和Teams的更新。Office提供了跨应用程序的功能&#xff0c;帮助用户在更短的时间内创建令人惊叹的内容&#xff0c;您可以在这里创作、沟通、协作并完成重要工作。 Microsoft 365 for Mac(Office 36…

LabVIEW智能变电站监控系统设计与实现

LabVIEW智能变电站监控系统设计与实现 随着电力系统和智能化技术的快速发展&#xff0c;建立一个高效、可靠的变电站监控系统显得尤为重要。通过分析变电站监控系统的需求&#xff0c;设计了一个基于LabVIEW软件的监控平台。该平台利用虚拟仪器技术、传感器技术和无线传输技术…

Debian常用命令详解:为开发者与系统管理员的实用指南

Debian常用命令详解&#xff1a;为开发者与系统管理员的实用指南 在Linux的世界里&#xff0c;Debian系统以其稳定性、易用性和广泛的软件包支持而备受推崇。对于开发者、系统管理员和广大Linux爱好者而言&#xff0c;掌握Debian常用命令是提升工作效率、管理系统资源的关键。…

B树与B+树

B树定义 每个节点最多有m-1个关键字&#xff08;可以存有的键值对&#xff0c;m表示树的高度&#xff09;根节点最少可以只有1个关键字非根节点至少有m/2个关键字每个节点中的关键字都按照从小到大的顺序排列&#xff0c;每个关键字的左子树中的所有关键字都小于它&#xff0c…