# Apache-Seata-dev **Repository Path**: zhudev2026/apache-seata-dev ## Basic Information - **Project Name**: Apache-Seata-dev - **Description**: Apache Seata组件相关 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-30 - **Last Updated**: 2026-06-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Apache Seata 部署配置项目 ## 项目介绍 本项目提供 Apache Seata 分布式事务解决方案的 Docker Compose 部署配置,集成了 Nacos 服务注册中心、MySQL 数据库存储以及 Seata 事务协调器的完整部署环境。 Apache Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将 Transaction Coordinator (TC) 部署为集群,支持高可用场景;Transaction Manager (TM) 和 Resource Manager (RM) 则嵌入业务应用中运行。 ## 软件架构 本项目采用以下组件架构: - **Seata Server**: 事务协调器(TC),负责管理全局事务和分支事务的状态 - **Nacos**: 服务注册与配置中心,负责服务发现和配置管理 - **MySQL 8**: 持久化存储,存储事务日志、分支事务信息及全局锁表 - **Docker Compose**: 容器编排与服务部署 ## 部署拓扑 ``` ┌─────────────────────────────────────────────────────────────┐ │ 应用服务 (TM/RM) │ │ (嵌入业务应用中运行) │ └─────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────┐ │ Seata Server │ │ (事务协调器 TC 集群) │ │ 监听: 8091 (TCP) / 7091 (HTTP) │ └─────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────┐ │ Nacos Server │ │ (服务注册与配置中心) │ │ 监听: 8848 (HTTP) │ └─────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────┐ │ MySQL Server │ │ (事务日志持久化存储) │ │ 监听: 3306 │ └─────────────────────────────────────────────────────────────┘ ``` ## 快速开始 ### 环境要求 - Docker 20.10+ - Docker Compose 2.0+ - MySQL 8.0+ - 建议配置:2核4GB以上 ### 部署步骤 #### 1. 克隆项目 ```bash git clone https://gitee.com/zhudev2026/apache-seata-dev.git cd apache-seata-dev/deploy/v1 ``` #### 2. 配置环境参数 根据实际环境修改以下配置文件: - `nacos/nacos.env` - Nacos 环境变量 - `mysql/.root_password` - MySQL root 密码 - `config/seata-server/application.yml` - Seata Server 配置 - `config/seata-naming-server/application.yml` - Seata 命名服务配置 #### 3. 启动服务 ```bash # 启动所有服务(MySQL -> Nacos -> Seata) docker-compose -f compose.yaml up -d ``` #### 4. 验证部署 - Nacos 控制台: http://:8848/nacos (用户名: nacos, 密码: nacos) - Seata 控制台: http://:7091/seata (用户名: seata, 密码: seata) ## 配置说明 ### Seata Server 配置 主要配置项位于 `config/seata-server/application.yml`: | 配置项 | 说明 | 默认值 | |-------|------|--------| | `store.db.driverClassName` | MySQL 驱动类 | com.mysql.cj.jdbc.Driver | | `store.db.url` | 数据库连接地址 | jdbc:mysql://localhost:3306/seata | | `store.db.user` | 数据库用户名 | seata | | `store.db.password` | 数据库密码 | seata | | `store.db.minConn` | 最小连接数 | 5 | | `store.db.maxConn` | 最大连接数 | 20 | | `server.retryTimeout` | 二阶段提交重试超时 | -1 (无限重试) | | `server.rollbackRetryTimeout` | 二阶段回滚重试超时 | -1 (无限重试) | ### Nacos 配置 Seata 在 Nacos 中的配置: | 配置项 | 说明 | |--------|------| | `spring.cloud.alibaba.seata.tx-group` | 事务分组名称 | | `spring.cloud.alibaba.seata.naming-service-group` | 命名服务分组 | | `spring.cloud.alibaba.seata.config.naming-server-addr` | Nacos 服务地址 | ### 数据库初始化 首次部署时,系统会自动创建以下数据库和表: - `nacos_config`: Nacos 配置数据库 - `seata`: Seata 事务数据库 - `global_table`: 全局事务表 - `branch_table`: 分支事务表 - `lock_table`: 全局锁表 - `undo_log`: 回滚日志表 ## 使用说明 ### 业务集成 在业务应用中添加 Seata 依赖并配置: ```yaml spring: cloud: alibaba: seata: tx-group: my_tx_group config: nacos: server-addr: ${NACOS_ADDR:localhost:8848} namespace: ${NACOS_NAMESPACE:} group: SEATA_GROUP ``` ### 开启分布式事务 在需要保证事务一致性的方法上添加 `@GlobalTransactional` 注解: ```java @GlobalTransactional(timeoutMills = 30000, name = "扣款服务") public void transfer(String from, String to, BigDecimal amount) { // 业务逻辑 } ``` ### Seata 控制台 通过 Seata 控制台可以: - 查看全局事务列表 - 查看分支事务详情 - 手动回滚异常事务 - 监控事务状态 ## 目录结构 ``` deploy/v1/ ├── compose.yaml # Docker Compose 编排文件 ├── mysql/ # MySQL 配置 │ ├── init-db/ # 数据库初始化脚本 │ ├── my.cnf # MySQL 配置文件 │ └── README.md # MySQL 部署说明 ├── nacos/ # Nacos 配置 │ ├── application.properties # Nacos 应用配置 │ ├── nacos.env # Nacos 环境变量 │ ├── seataServer.properties # Seata 在 Nacos 中的配置 │ └── README.md # Nacos 部署说明 ├── config/ # 配置文件目录 │ ├── seata-server/ # Seata Server 配置 │ └── seata-naming-server/ # Seata 命名服务配置 └── README.md # 部署说明文档 ``` ## 常见问题 ### 连接 MySQL 失败 1. 检查 MySQL 容器是否正常运行:`docker ps` 2. 检查防火墙是否开放 3306 端口 3. 确认数据库用户权限已正确配置 ### Seata Server 无法启动 1. 检查 Nacos 是否已正常运行 2. 确认 Seata 配置的 Nacos 地址可访问 3. 查看日志排查具体错误原因 ### 事务未正常回滚 1. 检查 `undo_log` 表是否存在 2. 确认 `undo_retention` 参数配置是否合理 3. 检查业务代码是否正确捕获异常 ## 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request ## 许可证 本项目基于 Apache License 2.0 许可证开源。 ## 相关链接 - [Apache Seata 官方文档](https://seata.io/) - [Nacos 官方文档](https://nacos.io/) - [Gitee 官方博客](https://blog.gitee.com) - [Gitee 探索](https://gitee.com/explore) - [Gitee 帮助](https://gitee.com/help)