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

这篇具有很好参考价值的文章主要介绍了【Seata】00 - Seata Server 部署(Windows、Docker 基于 Jpom)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

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

参考目录

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

版本说明

  • SeataV1.7.0
  • JpomV2.10.43

Windows 部署 seata-server

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

1:下载压缩包

在 GitHub 选择下载需要的版本:
【Seata】00 - Seata Server 部署(Windows、Docker 基于 Jpom),Seata,实用工具集,seata,jpom

2:文件存储模式

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

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

【Seata】00 - Seata Server 部署(Windows、Docker 基于 Jpom),Seata,实用工具集,seata,jpom

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

3:db 存储模式

3.1:建表

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

在 GitHub 上有 sql 脚本:

【Seata】00 - Seata Server 部署(Windows、Docker 基于 Jpom),Seata,实用工具集,seata,jpom

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

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】00 - Seata Server 部署(Windows、Docker 基于 Jpom),Seata,实用工具集,seata,jpom

seata:
  store:
    # support: file 、 db 、 redis
    mode: db
    session:
      mode: db
    lock:
      mode: db
    db:
      datasource: druid
      db-type: mysql
      driver-class-name: com.mysql.cj.jdbc.Driver
      url: jdbc:mysql://127.0.0.1:3306/seata_test1?rewriteBatchedStatements=true
      user: root
      password: root
      min-conn: 10
      max-conn: 100
      global-table: global_table
      branch-table: branch_table
      lock-table: lock_table
      distributed-lock-table: distributed_lock
      query-limit: 1000
      max-wait: 5000

3.3:启动脚本

同文件模式一样,直接双击启动即可。
【Seata】00 - Seata Server 部署(Windows、Docker 基于 Jpom),Seata,实用工具集,seata,jpom

4:源码部署

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

【Seata】00 - Seata Server 部署(Windows、Docker 基于 Jpom),Seata,实用工具集,seata,jpom

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

【Seata】00 - Seata Server 部署(Windows、Docker 基于 Jpom),Seata,实用工具集,seata,jpom

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

【Seata】00 - Seata Server 部署(Windows、Docker 基于 Jpom),Seata,实用工具集,seata,jpom

1.3:访问测试

访问路径:

http://192.168.2.158:2122/

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

2:Jpom Docker部署 seata-server

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

【Seata】00 - Seata Server 部署(Windows、Docker 基于 Jpom),Seata,实用工具集,seata,jpom

2.1:拉取镜像

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

【Seata】00 - Seata Server 部署(Windows、Docker 基于 Jpom),Seata,实用工具集,seata,jpom

进入镜像列表拉取镜像:

【Seata】00 - Seata Server 部署(Windows、Docker 基于 Jpom),Seata,实用工具集,seata,jpom

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

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

【Seata】00 - Seata Server 部署(Windows、Docker 基于 Jpom),Seata,实用工具集,seata,jpom

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

docker pull seataio/seata-server:1.7.0

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

【Seata】00 - Seata Server 部署(Windows、Docker 基于 Jpom),Seata,实用工具集,seata,jpom

等待拉取完成即可:

【Seata】00 - Seata Server 部署(Windows、Docker 基于 Jpom),Seata,实用工具集,seata,jpom

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

【Seata】00 - Seata Server 部署(Windows、Docker 基于 Jpom),Seata,实用工具集,seata,jpom

2.2:创建容器

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

【Seata】00 - Seata Server 部署(Windows、Docker 基于 Jpom),Seata,实用工具集,seata,jpom

点击创建容器:

【Seata】00 - Seata Server 部署(Windows、Docker 基于 Jpom),Seata,实用工具集,seata,jpom

修改容器信息:

【Seata】00 - Seata Server 部署(Windows、Docker 基于 Jpom),Seata,实用工具集,seata,jpom

容器创建完成:

【Seata】00 - Seata Server 部署(Windows、Docker 基于 Jpom),Seata,实用工具集,seata,jpom

如果是使用命令创建:

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

2.3:查看容器日志

右侧按钮展开查看日志:

【Seata】00 - Seata Server 部署(Windows、Docker 基于 Jpom),Seata,实用工具集,seata,jpom

【Seata】00 - Seata Server 部署(Windows、Docker 基于 Jpom),Seata,实用工具集,seata,jpom

2.4:访问测试

访问路径:

http://192.168.2.158:7091/

【Seata】00 - Seata Server 部署(Windows、Docker 基于 Jpom),Seata,实用工具集,seata,jpom

【Seata】00 - Seata Server 部署(Windows、Docker 基于 Jpom),Seata,实用工具集,seata,jpom

2.5:启动 Demo

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

【Seata】00 - Seata Server 部署(Windows、Docker 基于 Jpom),Seata,实用工具集,seata,jpom

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

【Seata】00 - Seata Server 部署(Windows、Docker 基于 Jpom),Seata,实用工具集,seata,jpom

(完)文章来源地址https://www.toymoban.com/news/detail-682782.html

到了这里,关于【Seata】00 - Seata Server 部署(Windows、Docker 基于 Jpom)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 使用 Jpom 自动构建和部署项目

    使用 Jpom 自动构建和部署项目

    比 Jenkins 简单的项目构建和部署工具。 我有几个自用的前端项目,每次修改代码后都需要本地打包再上传到服务器进行部署,感觉有点麻烦,不够自动化,所以一直想找个能够实现自动构建和部署的工具。 这时候可能会有人说用 Jenkins,其实我有体验过,但没能用起来,一方

    2024年02月11日
    浏览(9)
  • 安装Docker&使用Docker安装部署MySQL,Redis,RabbitMQ,Nacos,Seata,Minio

    安装Docker&使用Docker安装部署MySQL,Redis,RabbitMQ,Nacos,Seata,Minio

    sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine sudo yum remove -y yum-utils sudo yum install -y yum-utils sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo 如果这一步报错,说尝试其他镜像的话,执行下面步骤

    2024年02月05日
    浏览(26)
  • 分布式事务篇-2.1 阿里云轻量服务器--Docker--部署Seata

    分布式事务篇-2.1 阿里云轻量服务器--Docker--部署Seata

    本文介绍基于Seata 解决分布式事务,Seata 是一个服务所有首先需要对其进行部署。 Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。 拷贝完毕删

    2024年02月11日
    浏览(9)
  • docker-compose 部署 Seata整合nacos,Postgresql 为DB存储

    docker-compose 部署 Seata整合nacos,Postgresql 为DB存储

    详情环境可参考 https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E 我这里 所有选择seata版本为 1.3.0 前提:已经安装好nacos和postgresql 创建好数据库 名称:seata 执行以下sql: 其他的sql可以参考: https://github.com/seata/seata/tree/develop/script/server/db 服务器层级结构: 2

    2024年02月10日
    浏览(15)
  • mac | Windows 本地部署 Seata2.0.0,Nacos 作为配置中心、注册中心,MySQL 存储信息

    mac | Windows 本地部署 Seata2.0.0,Nacos 作为配置中心、注册中心,MySQL 存储信息

    系统 macOS sonama 14.1.1 MySQL 8.2.0 (官方默认是5.7版本) Seata 2.0.0 Nacos 2.2.3 默认你已经有 Nacos、MySQL,如果没有 Nacos 请参考我的文章 : Docker 部署 Nacos(单机),利用 MySQL 数据库存储配置信息 进行安装部署 Seata 下载地址:点此下载 注意:1.5版本(不记得是不是这个版本)之后没有

    2024年04月27日
    浏览(12)
  • 基于Docker for Windows部署ChatGPT-Next-Web

    基于Docker for Windows部署ChatGPT-Next-Web

    https://github.com/ChatGPTNextWeb/ChatGPT-Next-Web 官网地址:https://www.docker.com/ 下拉找到Download 选择Windows下载,安装 使用管理员身份打开PowerShell 在Github项目中找到Deployment,根据以下命令进行部署 由于Windows Powershell编码限制,需要换成` 等待Docker部署完毕即可运行 OPENAI_API_KEY (必填项

    2024年04月11日
    浏览(24)
  • Windows下seata报错为can not register RM,err:can not connect to services-server的解决办法,亲测有效。

    Windows下seata报错为can not register RM,err:can not connect to services-server的解决办法,亲测有效。

    nacoc下的服务: 点开seata的TC服务看一下里面的地址, 左下角为你该服务的ip地址。  上图我的ip地址是我目前在用的校园网地址也就是你的桌面右下角的网络地址。  我之前报错的原因呢是因为他这里的默认的ip是我之前虚拟机VMnet8的地址,这跟我另外三个的服务地址不出在

    2024年02月05日
    浏览(9)
  • 【超级实用多用户配置】Windows Server 2012 如何实现多个用户远程桌面登陆(2016也适用)

    【超级实用多用户配置】Windows Server 2012 如何实现多个用户远程桌面登陆(2016也适用)

    目录 实现办法: 1、 安装桌面会话主机和远程桌面授权 2、 web申请激活码 3、 激活终端服务 4、 配置远程桌面会话主机授权服务器 5、配置远程桌面会话主机授权模式 6、验证: 背景: Windows Server 2012默认情况下,只运行2个用户远程桌面登陆,这里我们可以通过安装远程桌面

    2024年02月13日
    浏览(9)
  • 【100个 Unity实用技能】☀️ | Unity 将秒数转化为00:00:00时间格式

    【100个 Unity实用技能】☀️ | Unity 将秒数转化为00:00:00时间格式

    老规矩,先介绍一下 Unity 的科普小知识: Unity 是 实时3D互动内容创作和运营平台 。 包括 游戏开发 、 美术 、 建筑 、 汽车设计 、 影视 在内的所有创作者,借助 Unity 将创意变成现实。 Unity 平台提供一整套完善的软件解决方案,可用于创作、运营和变现任何实时互动的2D和

    2023年04月09日
    浏览(11)
  • windows服务器实用(6)——gitbook安装与部署

    windows服务器实用(6)——gitbook安装与部署

    为了查找方便,以下内容来自GPT GitBook是一个基于Git的文档编写和托管平台,它提供了一种方便易用的方式来创建、编辑、发布和托管文档,特别适合于技术文档、教程、手册等领域的文档编写和发布。 GitBook平台支持多种文档格式,包括Markdown、Asciidoc和reStructuredText等,同时

    2024年02月07日
    浏览(11)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包