本文介绍基于Seata 解决分布式事务,Seata 是一个服务所有首先需要对其进行部署。
Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。
docker pull seataio/seata-server:1.5.0
docker run -d --name seata-server -p 8091:8091 seataio/seata-server:1.5.0
# 进入容器
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
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
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 的配置文件中进行修改。
可选, 指定seata-server启动的IP, 该IP用于向注册中心注册时使用, 如eureka等
可选, 指定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 环境变量设置成你所需的端口号。
可选, 指定seata-server的事务日志存储方式, 支持db ,file,redis(Seata-Server 1.3及以上版本支持), 默认是 file;
可选, 用于指定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。
可选, 指定 seata-server 运行环境, 如 dev, test 等, 服务启动时会使用 registry-dev.conf 这样的配置。
可选, 指定配置文件位置, 如 file:/root/registry, 将会加载 /root/registry.conf 作为配置文件,如果需要同时指定 file.conf文件,需要将registry.conf的config.file.name的值改为类似file:/root/file.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"
}
}
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及以上)