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

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

文章目录


前言

本文介绍基于Seata 解决分布式事务Seata 是一个服务所有首先需要对其进行部署。


一、Seata 介绍

Seata 是一款开源的分布式事务解决方案致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式为用户打造一站式的分布式解决方案。

二、Docker 部署

2.1.拉取镜像

docker pull seataio/seata-server:1.5.0

2.2.运行镜像

docker run -d --name seata-server -p 8091:8091 seataio/seata-server:1.5.0

2.3.拷贝配置文件

# 进入容器
docker exec -it seata-server sh

在这里插入图片描述

# 创建文件夹
# 配置文件
mkdir -p /root/seata/config
# 日志文件
mkdir -p /root/seata/logs
# 事务存储文件file 存储模式使用
mkdir -p /root/seata/sessionStore
# cp
docker cp seata-server:/seata-server/resources /root/seata/config

在这里插入图片描述
拷贝完毕删除容器

docker stop seata-server
docker rm seata-server

2.4.部署

docker run -d  --name seata-server1.5 \
--privileged=true \
 -p 8091:8091 \
 -p 7091:7091 \
 -v /root/seata/config/resources:/seata-server/resources  \
-v /root/seata/sessionStore:/seata-server/sessionStore   \
-v /root/seata/logs:/root/logs/seata   \
-e SEATA_IP=[公网ip] \
-e SEATA_PORT=8091 \
 seataio/seata-server:1.5.0 

2.5.参数解释

2.5.1 端口

  • 8091 端口是用来提供 seata-server 的事务管理服务的端口。其他应用程序将通过该端口与 seata-server 进行通信将事务的操作请求发送到 seata-server 并接收事务处理结果。应用程序需要配置与 seata-server 通信的 IP 地址、端口号和事务组 ID。

  • 7091 端口是用来向 seata-server 注册 seata-client 的端口。在应用程序启动时seata-client 将会注册自己的信息到 seata-server包括事务分组、数据源、事务日志存储等信息。seata-server 会使用该端口接收 seata-client 的注册请求。

需要注意的是seata-server 的端口号可以根据实际需求进行配置和更改上述的8091和7091端口号只是默认值可以在 seata 的配置文件中进行修改。

2.5.2 SEATA_IP

可选, 指定seata-server启动的IP, 该IP用于向注册中心注册时使用, 如eureka等

2.5.3 SEATA_PORT

可选, 指定seata-server启动的端口, 默认为 8091,SEATA_PORT 是 seata-server 的环境变量用于指定 seata-server 监听的端口号。

当启动 seata-server 容器时可以通过设置 SEATA_PORT 环境变量来指定 seata-server 使用的端口号。例如可以使用以下命令来启动 seata-server 容器并将 SEATA_PORT 设置为 8090

docker run --name seata-server -p 8090:8090 -e SEATA_PORT=8090 -d seataio/seata-server

这样seata-server 将会在容器内监听端口号 8090。在实际应用中你可以根据需要将 SEATA_PORT 环境变量设置成你所需的端口号。

2.5.4 STORE_MODE

可选, 指定seata-server的事务日志存储方式, 支持db ,file,redis(Seata-Server 1.3及以上版本支持), 默认是 file;

2.5.5 SERVER_NODE

可选, 用于指定seata-server节点ID, 如 1,2,3…, 默认为 根据ip生成;
在 Seata 1.5 版本中SERVER_NODE 是一个环境变量用于指定 Seata Client 连接的 Seata Server 节点。

当你的应用程序作为 Seata Client 运行时它需要知道要连接的 Seata Server 的主机和端口。通过设置 SERVER_NODE 环境变量可以告诉 Seata Client 要连接的 Seata Server 节点信息。

SERVER_NODE 的格式为 {host}:{port}其中 {host} 是 Seata Server 所在的主机名或 IP 地址{port} 是 Seata Server 监听的端口号。

以下是一个示例的启动命令演示如何使用 SERVER_NODE 环境变量进行配置

java -jar your-application.jar -DSERVER_NODE=127.0.0.1:8091

在上述命令中SERVER_NODE 被设置为 127.0.0.1:8091表示 Seata Client 要连接的 Seata Server 运行在本地的 8091 端口。

要注意的是SERVER_NODE 的值应该与实际运行的 Seata Server 的主机和端口相匹配以便 Seata Client 能够正确连接到 Seata Server。

2.5.6 SEATA_ENV:

可选, 指定 seata-server 运行环境, 如 dev, test 等, 服务启动时会使用 registry-dev.conf 这样的配置。

2.5.7 SEATA_CONFIG_NAME:

可选, 指定配置文件位置, 如 file:/root/registry, 将会加载 /root/registry.conf 作为配置文件如果需要同时指定 file.conf文件需要将registry.conf的config.file.name的值改为类似file:/root/file.conf

  • 创建conf 文件夹及 registry.conf文件
    在这里插入图片描述

  • 文件内容

registry {
  # file 、nacos 、eureka、redis、zk、consul、etcd3、sofa
  type = "nacos"
 
  nacos {
    application = "seata-server"
    serverAddr = "192.168.2.6:8001"
    group = "SEATA_GROUP"
    namespace = ""
    cluster = "default"
    username = "nacos"
    password = "nacos"
  }
}
 
config {
  # file、nacos 、apollo、zk、consul、etcd3
  type = "nacos"
 
  nacos {
    serverAddr = "192.168.2.6:8001"
    namespace = ""
    group = "SEATA_GROUP"
    username = "nacos"
    password = "nacos"
  }
}
  • 部署时指定 SEATA_CONFIG_NAME
docker run -d  --name seata-server1.5 \
 -p 8091:8091 \
 -p 7091:7091 \
 -v /root/seata/config:/seata-server/resources  \
-e SEATA_IP=localhost \
 -e SEATA_PORT=8091 \
-e  SEATA_CONFIG_NAME=file:/root/seata/conf/registry  \
 seataio/seata-server:1.5.0 

总结

以上内容通过Docker 工具在阿里云部署分布式服务Seata并且已file 存储事务数注册和配置中心都以file 模式进行。

参考

使用 Docker 部署 Seata Server (1.5.0及以上)

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: Docker服务器