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

news2024/10/5 21:22:30

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容器初步部署(可跳过)

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

seata初部署

  1. 编写/opt/1panel/apps/seata/docker-compose.yaml配置文件(这里的目录可以自定义,这里由于作者安装有1panel面板,为了方便统一管理容器所以放在此目录下)
version: "3"
services:
  seata-server:
    image: seataio/seata-server:latest
    hostname: seata-server
    container_name: seata
    ports:
      - "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进行自定义配置

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

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

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

环境准备

准备nacos配置中心配置

  • 首先在nacos中创建命名空间seata-server,然后再该命名空间下配置seataServer.yaml文件
    在这里插入图片描述
    在这里插入图片描述
  • 设置Data ID为seataServer.yaml Group为SEATA_GROUP 配置格式设置为YAML 配置内容如下:
    在这里插入图片描述
store:
    mode: db
    db:
      datasource: druid
      dbType: mysql
      driverClassName: com.mysql.cj.jdbc.Driver
      maxConn: 20
      maxWait: 5000
      minConn: 1
      user: xxx
      password: xxx
      url: jdbc:mysql://mysql_server_IP:3306/seata?useUnicode=true&characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false
      queryLimit: 100
      globalTable: global_table
      lockTable: lock_table
      branchTable: 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 = InnoDB
  DEFAULT 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 = InnoDB
  DEFAULT 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 = InnoDB
  DEFAULT 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 = InnoDB
  DEFAULT 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配置nacos注册中心

  • 在服务器上可以手动创建并编辑application.yml文件。如果你使用1Panel可以尝试将存储路径设置为/opt/1panel/apps/seata/data/conf/application.yml方便容器的管理。
  • 配置文件内容如下:
server:
  port: 7091

spring:
  application:
    name: seata-server

logging:
  config: classpath:logback-spring.xml
  file:
    path: ${log.home:${user.home}/logs/seata}
  extend:
    logstash-appender:
      destination: 127.0.0.1:4560
    kafka-appender:
      bootstrap-servers: 127.0.0.1:9092
      topic: logback_to_logstash

console:
  user:
    username: seata
    password: seata
seata:
  config:
    type: nacos
    nacos:
      server-addr: IP:8848 #请将IP修改为部署nacos服务的服务器IP 默认端口8848
      namespace: seata-server #和nacos命名空间一致
      group: SEATA_GROUP
      username: nacos
      password: nacos
      data-id: seataServer.yaml #定义nacos配置文件名称,此文件配置db信息
  registry:
    type: nacos
    nacos:  
      application: seata-server
      server-addr: IP:8848  #请将IP修改为部署nacos服务的服务器IP 默认端口8848
      group: SEATA_GROUP
      namespace: seata-server
      cluster: default
      username: nacos
      password: nacos
  security:
    secretKey: SeataSecretKey0c382ef121d778043159209298fd40bf3850a017
    tokenValidityInMilliseconds: 1800000
    ignore:
      urls: /,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.jpeg,/**/*.ico,/api/v1/auth/login,/version.json

准备docker-compose.yaml文件

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

启动seata容器

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1643588.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

stm32单片机开发四、USART“串口通信“

串口的空闲状态时高电平&#xff0c;起始位是低电平&#xff0c;来打破空闲状态的高电平 必须要有停止位&#xff0c;停止位一般为一位高电平 串口常说的数据为8N1&#xff0c;其实就是8个数据位&#xff08;固定的&#xff09;&#xff0c;N就是none&#xff0c;也就是0个校验…

mfc140.dll丢失如何修复?分享各种mfc140.dll丢失的解决方法

在Windows操作系统的世界里&#xff0c;动态链接库&#xff08;Dynamic Link Library, DLL&#xff09;扮演着举足轻重的角色&#xff0c;它们是实现程序功能共享、减少内存占用、促进模块化编程的关键组件。MFC140.dll便是众多DLL文件中的一员&#xff0c;它与微软基础类库&am…

【kettle006】kettle访问华为openGauss高斯数据库并处理数据至execl文件(已更新)

1.一直以来想写下基于kettle的系列文章&#xff0c;作为较火的数据ETL工具&#xff0c;也是日常项目开发中常用的一款工具&#xff0c;最近刚好挤时间梳理、总结下这块儿的知识体系。 2.熟悉、梳理、总结下华为openGauss高斯数据库相关知识体系 3.欢迎批评指正&#xff0c;跪谢…

网络基础「HTTPS」

✨个人主页&#xff1a; 北 海 &#x1f389;所属专栏&#xff1a; Linux学习之旅 &#x1f383;操作环境&#xff1a; CentOS 7.6 腾讯云远程服务器 文章目录 1.基本概念1.1.HTTP协议面临的问题1.2.加密与解密1.3.数字摘要1.4.数字签名 2.解决方案2.1.「对称式加密」2.2.「非对…

变分自编码器(VAE)介绍

变分自编码器&#xff08;VAE&#xff09;介绍 一、前言二、变分自编码器1、VAE的目标2、理论推导3、补充4、重参数技巧 一、前言 变分自编码器&#xff08;Variational Auto-Encoder&#xff0c;VAE&#xff09;是以自编码器结构为基础的深度生成模型。 自编码器&#xff08…

基于SpringBoot+Vue点餐系统设计和实现(源码+LW+部署讲解)

&#x1f339;作者简介&#xff1a;✌全网粉丝10W&#xff0c;前大厂员工&#xff0c;多篇互联网电商推荐系统专利&#xff0c;现有多家创业公司&#xff0c;致力于建站、运营、SEO、网赚等赛道。也是csdn特邀作者、博客专家、Java领域优质创作者&#xff0c;博客之星、掘金/华…

力扣每日一题104:二叉树的最大深度

题目 给定一个二叉树 root &#xff0c;返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;3示例 2&#xff1a; 输入&#xff1a;root [1,null,2…

QT5之windowswidget_菜单栏+工具栏_核心控件_浮动窗口_模态对话框_标准对话框/文本对话框

菜单栏工具栏 新建工程基类是QMainWindow 1、 2、 3、 点.pro文件&#xff0c;添加配置 因为之后用到lambda&#xff1b; 在.pro文件添加配置c11 CONFIG c11 #不能加分号 添加头文件 #include <QMenuBar>//菜单栏的头文件 主窗口代码mainwindow.cpp文件 #include &q…

了解并学会使用反射

目录 一、反射的应用场景&#xff08;简单了解&#xff09; 二、反射的定义 三、关于反射的四个重要的类 四、反射的使用 1.Class获取一个class对象的方式 方式一&#xff1a;forName&#xff08;&#xff09;&#xff1a; 方式二&#xff1a;封装类.Class&#xff1a; …

机器学习第37周周报 GGNN

文章目录 week37 GGNN摘要Abstract一、文献阅读1. 题目2. abstract3. 网络架构3.1 数据处理部分3.2 门控图神经网络3.3 掩码操作 4. 文献解读4.1 Introduction4.2 创新点4.3 实验过程4.3.1 传感器设置策略4.3.2 数据集4.3.3 实验设置4.3.4 模型参数设置4.3.5 实验结果 5. 结论 …

uniapp 安卓腾讯buglyapp性能监控原生插件

插件介绍 腾讯Bugly SDK可以帮助你发现多类异常问题&#xff0c;如崩溃&#xff0c;ANR&#xff0c;OOM&#xff0c;内存使用异常&#xff0c;应用操作卡顿&#xff0c;启动耗时过长等质量问题 插件地址 安卓腾讯buglyapp性能监控原生插件 - DCloud 插件市场 使用文档 uni…

大数据BI可视化(Echarts组件)项目开发-熟悉交互API5.0

全局echarts对象 init初始化 registerTheme注册主题 var mCharts echarts.init(document.querySelector("div"), itcast)registerMap地图图表 connect 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8&qu…

Vue按照顺序实现多级弹窗(附Demo)

目录 前言1. 单个弹窗2. 多级弹窗 前言 强化各个知识点&#xff0c;以实战融合&#xff0c;以下两个Demo从实战提取 1. 单个弹窗 部署按钮框以及确定的方法即可 截图如下所示&#xff1a; 以下Demo整体逻辑如下&#xff1a; 点击“生成周月计划”按钮会触发showWeekPlanDia…

【前端学习——网络相关】浏览器同源策略和跨域

浏览器的同源策略 为什么要有&#xff1f; 帮助阻隔恶意文档&#xff0c;减少可能被攻击的媒介。&#xff08;就是为了安全&#xff09; 如果非同源&#xff0c;共有三种行为受到限制 &#xff08;1&#xff09; Cookie、LocalStorage 和 IndexDB 无法读取。 &#xff08;2…

JavaScript中的DOM和BOM

个人主页&#xff1a;学习前端的小z 个人专栏&#xff1a;JavaScript 精粹 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结&#xff0c;欢迎大家在评论区交流讨论&#xff01; 文章目录 &#x1f4af;Web API&#x1f340;1 API的概念&#x1f340;2 Web API的概念…

闲来装个虚拟机Ubuntu24.04和硬盘分区及挂载

简述 最近ubuntu出新版本了&#xff0c;ubuntu24.04&#xff0c; 俗称高贵食蚁兽。5年前进行Android或者linux开发基本是在windows下的虚拟机中进行。目前&#xff0c;虽然物质基础提高了&#xff0c;功能有独立进行编译、代码管理的服务器了。可以通过ssh登录&#xff0c;但是…

基于java,SpringBoot和Vue的智慧校园在线考试留言讨论系统设计

摘要 基于Java, SpringBoot和Vue的智慧校园在线考试留言讨论系统是一个为现代教育需求定制的Web应用&#xff0c;它结合了最新的前后端技术来提供一个互动性强、用户友好的学习和交流平台。该系统旨在通过提供实时留言和讨论功能&#xff0c;增进学生间的互动以及师生之间的沟…

第九篇:Python编程的魔法:掌握高级语法糖与技巧

Python编程的魔法&#xff1a;掌握高级语法糖与技巧 1 引言 在编程的世界里&#xff0c;"语法糖"这个术语指的是那些让代码更容易读写的语法。Python作为一个强调可读性和效率的语言&#xff0c;提供了大量的语法糖。那么为什么需要掌握Python的高级特性呢&#xff…

C++ | Leetcode C++题解之第70题爬楼梯

题目&#xff1a; 题解&#xff1a; class Solution { public:int climbStairs(int n) {double sqrt5 sqrt(5);double fibn pow((1 sqrt5) / 2, n 1) - pow((1 - sqrt5) / 2, n 1);return (int)round(fibn / sqrt5);} };

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…