docker安装seata

news2024/10/7 8:20:13

文章目录

  • 前言
  • 准备工作
    • 生成seata配置文件
      • 创建文件夹
      • 创建临时容器
      • 拷贝容器内配置文件
      • 删除临时容器
    • 导入seata配置到nacos
    • 修改application.yml配置文件
    • 生成seata所需mysql表
    • 修改TC的事务信息存储方式
      • db(mysql)
      • redis
  • docker指令安装
  • 制作docker-compose.yaml文件
  • 查看网站

前言

Apache Seata(incubating) 是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务。
对于docker安装seata,以下是官网操作手册文档地址:

https://seata.io/zh-cn/docs/ops/deploy-by-docker.html

准备工作

生成seata配置文件

我们通过创建临时容器的方式,直接从中拷贝出自动生成的配置信息,待挂载使用

创建文件夹

mkdir -p /home/docker_home/seata/seata-data

创建临时容器

docker run -d \
--name seata \
seataio/seata-server:1.5.2

拷贝容器内配置文件

docker cp seata:/seata-server/resources /home/docker_home/seata/seata-data

删除临时容器

docker rm -f seata

导入seata配置到nacos

由于我们需要使用nacos作为seata服务的配置中心和注册中心,其中,配置中心的配置,我们需要先行导入,先访问以下网站,下载config.txt文件

https://github.com/seata/seata/tree/1.5.2/script/config-center

里面有很多配置,但我们只取重点需要的,如下:

service.vgroupMapping.default-tx-group=default
store.mode=db

store.lock.mode=db
store.session.mode=db

store.db.datasource=druid
store.db.dbType=mysql
store.db.driverClassName=com.mysql.jdbc.Driver
store.db.url=jdbc:mysql://localhost:3306/seata?useUnicode=true&rewriteBatchedStatements=true
store.db.user=root
store.db.password=root
store.db.minConn=5
store.db.maxConn=30
store.db.globalTable=global_table
store.db.branchTable=branch_table
store.db.distributedLockTable=distributed_lock
store.db.queryLimit=100
store.db.lockTable=lock_table
store.db.maxWait=5000

server.recovery.committingRetryPeriod=1000
server.recovery.asynCommittingRetryPeriod=1000
server.recovery.rollbackingRetryPeriod=1000
server.recovery.timeoutRetryPeriod=1000
server.maxCommitRetryTimeout=-1
server.maxRollbackRetryTimeout=-1
server.rollbackRetryTimeoutUnlockEnable=false
server.distributedLockExpireTime=10000
server.xaerNotaRetryTimeout=60000
server.session.branchAsyncQueueSize=5000
server.session.enableBranchAsyncRemove=false

client.rm.asyncCommitBufferLimit=10000
client.rm.lock.retryInterval=10
client.rm.lock.retryTimes=30
client.rm.lock.retryPolicyBranchRollbackOnConflict=true
client.rm.reportRetryCount=5
client.rm.tableMetaCheckEnable=true
client.rm.tableMetaCheckerInterval=60000
client.rm.sqlParserType=druid
client.rm.reportSuccessEnable=false
client.rm.sagaBranchRegisterEnable=false
client.rm.sagaJsonParser=fastjson
client.rm.tccActionInterceptorOrder=-2147482648
client.tm.commitRetryCount=5
client.tm.rollbackRetryCount=5
client.tm.defaultGlobalTransactionTimeout=60000
client.tm.degradeCheck=false
client.tm.degradeCheckAllowTimes=10
client.tm.degradeCheckPeriod=2000
client.tm.interceptorOrder=-2147482648
client.undo.dataValidation=true
client.undo.logSerialization=jackson
client.undo.onlyCareUpdateColumns=true
server.undo.logSaveDays=7
server.undo.logDeletePeriod=86400000
client.undo.logTable=undo_log
client.undo.compress.enable=true
client.undo.compress.type=zip
client.undo.compress.threshold=64k

tcc.fence.logTableName=tcc_fence_log
tcc.fence.cleanPeriod=1h

log.exceptionRate=100

metrics.enabled=false
metrics.registryType=compact
metrics.exporterList=prometheus
metrics.exporterPrometheusPort=9898

transport.type=TCP
transport.server=NIO
transport.heartbeat=true
transport.enableTmClientBatchSendRequest=false
transport.enableRmClientBatchSendRequest=true
transport.enableTcServerBatchSendResponse=false
transport.rpcRmRequestTimeout=30000
transport.rpcTmRequestTimeout=30000
transport.rpcTcRequestTimeout=30000
transport.threadFactory.bossThreadPrefix=NettyBoss
transport.threadFactory.workerThreadPrefix=NettyServerNIOWorker
transport.threadFactory.serverExecutorThreadPrefix=NettyServerBizHandler
transport.threadFactory.shareBossWorker=false
transport.threadFactory.clientSelectorThreadPrefix=NettyClientSelector
transport.threadFactory.clientSelectorThreadSize=1
transport.threadFactory.clientWorkerThreadPrefix=NettyClientWorkerThread
transport.threadFactory.bossThreadSize=1
transport.threadFactory.workerThreadSize=default
transport.shutdown.wait=3
transport.serialization=seata
transport.compressor=none

将上述配置导入nacos,命名seata-server.properties,如下图
在这里插入图片描述

修改application.yml配置文件

  • 在完成了nacos配置中心的配置导入后,就可以开始设置application.yml配置文件
  • 有一点要说明一下,在随着版本更替,seata使用application.yml统一进行配置管理,旧版本的是registry.conf等文件。
  • 在上面从容器中拷贝出来的resources文件夹中找到application.yml文件

在这里插入图片描述

  • 根据你实际的nacos等配置信息,设置相应的application.yml配置项
console:
  user:
    username: seata
    password: seata
seata:
  config:
    # support: nacos 、 consul 、 apollo 、 zk  、 etcd3
    type: nacos
    nacos:
      server-addr: 192.168.xxx.xxx:8848
      username: nacos
      password: nacos
      namespace: 7307bce9-3698-45c2-b721-38acea281e7b
      data-id: seata-server.properties
  registry:
    # support: nacos 、 eureka 、 redis 、 zk  、 consul 、 etcd3 、 sofa
    type: nacos
    nacos:
      application: seata-server
      server-addr: 192.168.xxx.xxx:8848
      username: nacos
      password: nacos
      namespace: b4d0832b-a7b0-44c2-8ce5-1abe676a4736

如果你想修改到时候生成的web登陆的账号密码,就修改console里的username和password

生成seata所需mysql表

TC 运行需要将事务信息保存在数据库,因此需要创建一些表

  • https://github.com/apache/incubator-seata/tree/1.5.2/script/server/db

访问上面链接,去到源码中,找到script\server\db 这个目录。由于是使用mysql的,所以下载mysql.sql
在这里插入图片描述
左侧选择版本,右侧下载mysql.sql,直接导入到你的mysq。记得先创建schema,可命名seata
在这里插入图片描述

  • global_table:全局事务表,每当有一个全局事务发起后,就会在该表中记录全局事务的ID
  • branch_table:分支事务表,记录每一个分支事务的ID,分支事务操作的哪个数据库等信息
  • lock_table:全局锁
  • distributed_lock:分布式锁

修改TC的事务信息存储方式

seata 的 TC 端的事务信息存储模式(store.mode)现有file、db、redis三种,file模式无需改动,直接启动即可,下面专门讲下db和redis启动步骤。

db(mysql)

db模式为高可用模式,全局事务会话信息通过db共享,相应性能差些;上一节的内容已经将所有的配置信息都推送到了Nacos中,TC启动时会从Nacos中读取,因此我们修改也需要在Nacos中修改。需要修改的配置如下:

## 采用db的存储形式
store.mode=db
## druid数据源
store.db.datasource=druid
## mysql数据库
store.db.dbType=mysql
## mysql驱动
store.db.driverClassName=com.mysql.jdbc.Driver
## TC的数据库url
store.db.url=jdbc:mysql://127.0.0.1:3306/seata_server?useUnicode=true
## 用户名
store.db.user=root
## 密码
store.db.password=Nov2014

redis

redis模式 Seata-Server 1.3 及以上版本支持,性能较高,但存在事务信息丢失风险,所以需要提前配置合适当前场景的redis持久化配置,该模式需改动以下配置:

store.mode=redis
store.redis.host=127.0.0.1
store.redis.port=6379
store.redis.password=123456

docker指令安装

上述准备工作都做完后,我们进行正式的容器生成

docker run -d \
--name seata \
-p 8091:8091 \
-p 7091:7091 \
--restart=always \
-e SEATA_IP=127.0.0.1 \
-v /home/docker_home/seata/seata-data/resources:/seata-server/resources \
seataio/seata-server:1.5.2
  • 以这种方式启动的 seata-server,在注册中心注册的 IP 和 端口就是 SEATA_IP 和 SEATA_PORT 指定的值,除此之外,seata-server 还支持以下环境变量:

SEATA_IP:可选,指定seata-server启动的IP,该IP用于向注册中心注册时使用
SEATA_PORT:可选,指定seata-server启动的端口,默认为 8091
STORE_MODE:可选,指定seata-server的事务日志存储方式,支持 db、file、redis,默认是 file
SERVER_NODE:可选, 用于指定seata-server节点ID, 如 1,2,3…,默认根据IP生成
SEATA_ENV:可选,指定 seata-server 运行环境,如 dev、test 等,服务启动时会使用 registry-dev.conf 这样的配置

制作docker-compose.yaml文件

version: '3.8'

services:
  seata:
    image: seataio/seata-server:1.5.2
    container_name: seata
    ports:
      - "8091:8091"
      - "7091:7091"
    restart: always
    environment:
      - SEATA_IP=47.107.103.145
    volumes:
      - /home/docker_home/seata/seata-data/resources:/seata-server/resources

查看网站

http://47.107.103.145:7091/#/TransactionInfo

  • 默认账号:seata
  • 默认密码:seata
  • 如果需要修改就改application.yml里的console配置项

在这里插入图片描述

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

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

相关文章

SAP ERP实施有几个阶段?工博科技带来SAP系统实施项目全流程介绍

根据SAP实施方法论,SAP系统实施流程一共分为五个主要项目阶段:项目准备、蓝图设计、系统实现、上线准备、上线后支持。在项目启动前,双方必须对项目实施过程中各阶段所涉及的任务与交付件以及项目完成标志达成共识,各阶段项目交付…

PCB上的阻抗设计如何变得简单

关于阻抗(Impedance),Bob发现很多刚接触到这个概念的小伙伴经常把它与电阻(Resistance)看作是同等的概念。可能阻抗与电阻按中文名称来说,他们都带一个阻字,而且单位都是Ω,然后阻抗…

代码随想录算法训练营第二十七天|39. 组合总和,40.组合总和II,131.分割回文串

题目:39. 组合总和 给你一个无重复元素 的整数数组 candidates和一个目标整数target,找出 candidates中可以使数字和为目标数target的所有不同组合,并以列表形式返回。你可以按任意顺序返回这些组合。 candidates中的同一个数字可以无限制重复…

RabbitMQ3.13.x之九_Docker中安装RabbitMQ

RabbitMQ3.13.x之_Docker中安装RabbitMQ 文章目录 RabbitMQ3.13.x之_Docker中安装RabbitMQ1. 官网2. 安装1 .拉取镜像2. 运行容器 3. 访问 1. 官网 rabbitmq - Official Image | Docker Hub 2. 安装 1 .拉取镜像 docker pull rabbitmq:3.13.0-management2. 运行容器 # lates…

HTTP 摘要认证

文章目录 一、什么是摘要认证二、工作流程三、实例演示 一、什么是摘要认证 摘要认证,即 Digest Access Authentication,是一种HTTP身份验证机制,用于验证用户的身份。相较于基本认证(Basic Authentication)使用用户名…

10 Python进阶:MongoDB

MongoDb介绍 MongoDB是一个基于分布式架构的文档数据库,它使用JSON样式的数据存储,支持动态查询,完全索引。MongoDB是NoSQL数据库的一种,主要用于处理大型、半结构化或无结构化的数据。以下是MongoDB数据库的一些关键特点和优势&a…

【计算机毕业设计】宠物销售系统——后附源码

🎉**欢迎来到我的技术世界!**🎉 📘 博主小档案: 一名来自世界500强的资深程序媛,毕业于国内知名985高校。 🔧 技术专长: 在深度学习任务中展现出卓越的能力,包括但不限于…

论文阅读——Sat2Vid

Sat2Vid: Street-view Panoramic Video Synthesis from a Single Satellite Image 提出了一种新颖的方法,用于从单个卫星图像和摄像机轨迹合成时间和几何一致的街景全景视频。 即根据单个卫星图像和给定的观看位置尽可能真实地、尽可能一致地合成街景全景视频序列。…

全面解析十七种数据分析方法,具象数据分析思维

本文干货信息汇总:FineBI自助式BI数据分析工具下载>>https://s.fanruan.com/vfp40FineBI数据分析模板库>>https://s.fanruan.com/fnbjg 一、介绍 在当今数据驱动的商业环境中,数据分析已经成为了企业获取竞争优势的关键工具。无论是为了优化…

ACT逻辑解析

ACT逻辑解析 ACT内核1. 整体过程:1.1 Action Chunking and Temporal Ensemble1.2 Modeling human data(人工示教数据建模)1.3 Implemention ACT1.4 ACT内核 现有模仿学习缺点:在细颗粒度的任务中需要有高频的控制和闭环反馈 1. 整体过程: …

Mysql5.7 yum 简单/快速安装

Centos7下MySql安装及配置过程,简单直装版 目录 操作步骤 一、检查linux是否已安装MySql二、清除MySQL(适用重新安装) 1、删除MySQL及其依赖包2、查询遗留的目录3、删除遗留的目录三、开始安装MySQL 1、下载并添加库2、安装MySQL包3、设置My…

PID控制有物理含义吗

PID控制有物理含义吗 一、背景 对于PID的初学者,经常会有疑惑,为什么位置的误差通过PID就变成了期望速度?他们之间有什么物理关系吗?还有对于无人机,为什么期望升力,又是期望加速度,又是期望油…

绝地求生:愉人不愚人!分享你的PUBG摸“愚”穿搭,赢精美套装好礼

活动简介 愚人节来啦!为了和大家一起分享诙谐幽默的搞怪氛围,特此推出搞怪穿搭大会!快来戴上你最喜爱的头套或面具一起来参加吧!只要参与 #摸“愚”穿搭# 话题投稿,即有机会赢取魔力甜心萨莉套装1的奖励,也…

Composer Windows 安装

Composer 的下载地址为:Composer 1 运行安装程序 当启动安装程序后单击下一步继续。 选择 PHP 路径 如果你的计算机上没有安装 PHP 的话,Composer 的安装无法继续。 你需要选择你本地安装的 PHP 路径。 配置代理地址 默认的情况下,可以不…

外汇110:外汇交易不同货币类别及交易注意事项!

外汇市场是一个庞大而复杂的市场,其中有各种各样的货币品种。对于外汇投资者来说,了解外汇品种的特性和走势是比较重要的。1. 货币种类 外汇市场中的货币品种可以分为主要货币、次要货币和外围货币。 主要货币:主要指美元、欧元、英镑、日元、…

美国CPC认证是什么?为什么必须办理CPC认证呢?

美国CPC认证,全称为Childrens Product Certificate,是儿童产品认证的意思。它主要针对的是在美国市场销售的儿童产品,如玩具、家具、童车、餐椅、床上用品等。CPC认证要求产品安全性高,符合美国加州65、16 CFR等法规要求&#xff…

window安装maven和hadoop3.1.4

前面的文章已讲解如何安装idea和进行基本设置,本文主要带着大家安装配置好maven和hadoop. 大家不用去官网下载,直接使用我发给大家的压缩文件,注意解压后的文件夹不要放在中文目录下,课堂上我们讲解过原因。 这是我电脑上的路径&a…

vue3基础入门项目实战实例介绍

Vue 3 带来了许多新特性和性能优化,使得构建高效且可维护的前端应用变得更加容易。下面是一个简单的 Vue 3 基础项目实战实例介绍,帮助你入门: 项目概述 这个实战项目是一个简单的待办事项管理应用,用户可以添加、编辑和删除待办…

商业地产数字化是什么?又有哪些优势呢?

​一、什么是商业地产数字化 数字化是信息化的延伸与拓展。在企业完成信息化之后,对存储的信息的解析与挖掘,建立数据洞察,从而改变企业决策,打造全新的企业运作方式,实现数据化转型。 商业地产数字化是指将商业地产…

前端三剑客 —— JavaScript (第三节)

目录 内容回顾: 1.数据类型 2.常见运算符 数据类型转换 自动类型转换 强制类型转换 流程控制语句 顺序流程 选择流程 单分支 多分支 switch 循环流程 for循环 while循环 do...while循环 如何选择 continue和break 循环案例 内容回顾: …