文章目录
- 前言
- 一、Seata 介绍
- 二、Docker 部署:
- 2.1.拉取镜像:
- 2.2.运行镜像:
- 2.3.拷贝配置文件:
- 2.4.部署:
- 2.5.参数解释:
- 2.5.1 端口:
- 2.5.2 SEATA_IP:
- 2.5.3 SEATA_PORT:
- 2.5.4 STORE_MODE:
- 2.5.5 SERVER_NODE:
- 2.5.6 SEATA_ENV:
- 2.5.7 SEATA_CONFIG_NAME:
- 总结
- 参考:
前言
本文介绍基于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及以上)