Spring Cloud Alibaba 微服务容器化部署实战指南
前言
Spring Cloud Alibaba 作为阿里巴巴开源的微服务解决方案,为开发者提供了丰富的分布式系统构建能力。本文将详细介绍如何使用 Docker-Compose 对 Spring Cloud Alibaba 集成示例项目进行容器化部署,帮助开发者快速搭建完整的微服务演示环境。
环境准备
硬件要求
由于示例项目包含多个微服务组件,建议本地机器内存资源不低于 24GB,以确保所有服务能够顺利运行。
软件依赖
- Docker 环境:需要安装 Docker 引擎,版本建议 20.10 以上
- Docker-Compose:推荐使用 v2.x 版本
- Maven:用于项目构建,建议 3.6 以上版本
主机配置
在本地 hosts 文件中添加以下域名映射,确保服务间通信正常:
127.0.0.1 integrated-mysql
127.0.0.1 nacos-server
127.0.0.1 seata-server
127.0.0.1 rocketmq
127.0.0.1 gateway-service
127.0.0.1 integrated-frontend
项目构建与部署
1. 项目编译
进入项目目录后,执行以下命令生成可部署的 jar 包:
mvn clean package
2. 基础设施启动
使用 docker-compose 启动微服务依赖的基础设施:
docker-compose -f ./docker-compose/docker-compose-env.yml up -d
该命令将启动以下组件:
- Nacos 服务注册与配置中心
- MySQL 数据库
- Seata 分布式事务服务
- RocketMQ 消息队列
3. 配置初始化
执行提供的脚本,自动向 Nacos 导入所有微服务配置:
./config-init/scripts/nacos-config-quick.sh
4. 微服务启动
启动所有业务微服务:
docker-compose -f ./docker-compose/docker-compose-service.yml up -d
功能演示
分布式事务场景
场景说明
演示一个典型的电商下单场景:
- 扣减商品库存
- 扣减用户余额
- 创建订单记录
测试步骤
- 访问前端页面:
http://integrated-frontend:8080/order - 使用默认用户 admin(余额3元)下单商品1(单价2元)
- 第一次下单成功,库存和余额正常扣减
- 第二次下单将因余额不足触发分布式事务回滚
技术实现
该场景通过 Seata 实现分布式事务管理:
- 使用 AT 模式自动处理事务
- 异常时自动回滚所有参与服务的数据变更
- 通过全局事务ID实现跨服务事务关联
流量控制场景
场景一:Sentinel 熔断降级
- 访问
http://integrated-frontend:8080/sentinel - 前端模拟10个并发请求
- 网关配置限流规则为5QPS
- 观察5个请求成功,5个被熔断降级
场景二:RocketMQ 削峰填谷
- 访问
http://integrated-frontend:8080/rocketmq - 模拟1000个点赞请求
- 生产者将请求转为消息存入RocketMQ
- 消费者按配置速率消费消息
- 观察数据库点赞数逐步增加
技术实现
- Sentinel:在网关层实现QPS限流
- RocketMQ:
- 生产者快速接收请求并存入消息队列
- 消费者按可控速率处理消息
- 消息堆积能力应对突发流量
环境清理
停止微服务
docker-compose -f ./docker-compose/docker-compose-service.yml down
停止基础设施
docker-compose -f ./docker-compose/docker-compose-env.yml down
最佳实践建议
- 资源监控:建议使用 Docker 监控工具观察各容器资源使用情况
- 日志收集:可配置 ELK 等日志系统集中管理容器日志
- 配置管理:生产环境建议将 Nacos 配置持久化到数据库
- 性能调优:根据实际硬件调整各容器内存限制参数
总结
通过本指南,我们完成了 Spring Cloud Alibaba 完整微服务体系的容器化部署,涵盖了服务注册发现、配置中心、分布式事务、消息队列等核心组件。这种基于 Docker-Compose 的部署方式特别适合开发测试环境,能够快速搭建完整的微服务演示平台。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



