# 🏗️ 后端架构重构计划:微服务 → 单体服务 ## 📋 项目概述 ### 🎯 重构目标 - **从**: Spring Cloud Alibaba 微服务架构 (backend-distributed) - **到**: Spring Boot 单体服务架构 (backend-single) - **原因**: 服务器资源不充足,简化部署和维护 ### ✅ 当前基础设施状态 - **MySQL**: ✅ 8.0.24 直接部署,端口3306 - **Redis**: ✅ 直接部署,端口6379 - **Nacos**: ⚠️ 需要重新配置,端口8848 - **前端**: ✅ 静态部署,http://47.111.10.27/emotion/happy/ ## 📊 现有微服务模块分析 ### 核心服务模块 1. **emotion-gateway** (19000) - API网关 2. **emotion-user** (19001) - 用户服务 3. **emotion-ai** (19002) - AI对话服务 4. **emotion-auth** (19008) - 认证服务 5. **emotion-record** - 记录服务 6. **emotion-growth** - 成长服务 7. **emotion-explore** - 探索服务 8. **emotion-reward** - 奖励服务 9. **emotion-websocket** - WebSocket服务 10. **emotion-stats** - 统计服务 ### 公共模块 - **emotion-common** - 公共工具类 - **emotion-entity** - 实体类 ## 🗂️ 重构实施计划 ### 阶段1: 环境准备和配置优化 (30分钟) #### 1.1 优化Nacos配置 ```bash # 目标: 配置Nacos使用MySQL数据库和鉴权 - 修改 /data/programs/nacos/conf/application.properties - 配置MySQL数据源 - 启用鉴权功能 - 重启Nacos服务 ``` #### 1.2 验证基础设施 ```bash # 验证MySQL、Redis、Nacos状态 - MySQL连接测试 - Redis连接测试 - Nacos控制台访问测试 ``` ### 阶段2: 创建单体服务架构 (60分钟) #### 2.1 创建backend-single项目结构 ``` backend-single/ ├── src/main/java/com/emotion/ │ ├── EmotionApplication.java # 主启动类 │ ├── config/ # 配置类 │ │ ├── DatabaseConfig.java │ │ ├── RedisConfig.java │ │ ├── WebConfig.java │ │ └── SecurityConfig.java │ ├── controller/ # 控制器层 │ │ ├── UserController.java │ │ ├── AiController.java │ │ ├── AuthController.java │ │ ├── RecordController.java │ │ ├── GrowthController.java │ │ ├── ExploreController.java │ │ ├── RewardController.java │ │ └── WebSocketController.java │ ├── service/ # 服务层 │ │ ├── UserService.java │ │ ├── AiService.java │ │ ├── AuthService.java │ │ ├── RecordService.java │ │ ├── GrowthService.java │ │ ├── ExploreService.java │ │ ├── RewardService.java │ │ └── WebSocketService.java │ ├── mapper/ # 数据访问层 │ │ ├── UserMapper.java │ │ ├── ConversationMapper.java │ │ ├── MessageMapper.java │ │ └── CozeApiCallMapper.java │ ├── entity/ # 实体类 │ │ ├── User.java │ │ ├── Conversation.java │ │ ├── Message.java │ │ └── CozeApiCall.java │ ├── common/ # 公共类 │ │ ├── Result.java │ │ ├── BaseEntity.java │ │ └── Constants.java │ └── websocket/ # WebSocket │ └── ChatWebSocketHandler.java ├── src/main/resources/ │ ├── application.yml # 主配置文件 │ ├── application-local.yml # 本地配置 │ ├── application-prod.yml # 生产配置 │ └── mapper/ # MyBatis映射文件 └── pom.xml # Maven配置 ``` #### 2.2 整合功能模块 - **用户管理**: 注册、登录、用户信息管理 - **AI对话**: Coze API集成、对话管理 - **认证授权**: JWT Token、权限控制 - **数据记录**: 对话记录、API调用记录 - **WebSocket**: 实时通信 - **其他功能**: 成长、探索、奖励、统计 ### 阶段3: 代码迁移和整合 (90分钟) #### 3.1 依赖管理 ```xml - Spring Boot Starter Web - Spring Boot Starter Data JPA - Spring Boot Starter Data Redis - Spring Boot Starter WebSocket - Spring Boot Starter Security - MySQL Connector - MyBatis Plus - JWT - Coze API Client ``` #### 3.2 配置文件整合 ```yaml # application.yml server: port: 8080 spring: datasource: url: jdbc:mysql://localhost:3306/emotion_museum username: emotion password: EmotionDB2024! redis: host: localhost port: 6379 jpa: hibernate: ddl-auto: update # API配置 coze: api: token: ${COZE_API_TOKEN} bot-id: 7523042446285439016 workflow-id: 7523047462895796287 ``` #### 3.3 代码迁移策略 1. **复制公共模块**: emotion-common, emotion-entity 2. **整合Controller**: 合并所有微服务的Controller 3. **整合Service**: 合并业务逻辑,去除远程调用 4. **整合Mapper**: 统一数据访问层 5. **配置整合**: 移除Nacos配置,使用本地配置 ### 阶段4: 部署脚本开发 (30分钟) #### 4.1 创建构建脚本 ```bash # build-single.sh - Maven clean package - 生成可执行JAR包 - 验证构建结果 ``` #### 4.2 创建部署脚本 ```bash # deploy-single.sh - 停止旧的微服务 - 清理旧的部署文件 - 上传新的JAR包 - 启动单体服务 - 健康检查 ``` #### 4.3 创建服务管理脚本 ```bash # service-control.sh - start: 启动服务 - stop: 停止服务 - restart: 重启服务 - status: 查看状态 - logs: 查看日志 ``` ### 阶段5: 清理和优化 (20分钟) #### 5.1 清理旧的微服务 ```bash # 停止所有微服务进程 # 删除旧的JAR包 # 清理日志文件 # 移除Nacos服务注册 ``` #### 5.2 优化系统配置 ```bash # 调整JVM参数 # 配置日志轮转 # 设置自动启动 ``` ### 阶段6: 测试和验证 (30分钟) #### 6.1 功能测试 - **用户注册/登录**: 测试认证功能 - **AI对话**: 测试Coze API集成 - **数据持久化**: 测试数据库操作 - **WebSocket**: 测试实时通信 #### 6.2 性能测试 - **内存使用**: 监控内存占用 - **响应时间**: 测试API响应速度 - **并发处理**: 测试并发用户访问 #### 6.3 集成测试 - **前后端集成**: 测试前端页面功能 - **数据库集成**: 验证数据一致性 - **缓存集成**: 验证Redis缓存 ## 📋 实施检查清单 ### ✅ 阶段1检查项 - [ ] Nacos配置优化完成 - [ ] MySQL连接正常 - [ ] Redis连接正常 - [ ] Nacos控制台可访问 ### ✅ 阶段2检查项 - [ ] backend-single项目结构创建 - [ ] 依赖配置完成 - [ ] 基础配置文件创建 ### ✅ 阶段3检查项 - [ ] 所有Controller迁移完成 - [ ] 所有Service迁移完成 - [ ] 所有Mapper迁移完成 - [ ] 配置文件整合完成 - [ ] 代码编译通过 ### ✅ 阶段4检查项 - [ ] 构建脚本创建并测试 - [ ] 部署脚本创建并测试 - [ ] 服务管理脚本创建 ### ✅ 阶段5检查项 - [ ] 旧微服务清理完成 - [ ] 系统配置优化完成 ### ✅ 阶段6检查项 - [ ] 所有功能测试通过 - [ ] 性能测试满足要求 - [ ] 前后端集成测试通过 ## 🚀 预期结果 ### 架构简化 - **服务数量**: 10个微服务 → 1个单体服务 - **端口使用**: 10个端口 → 1个端口(8080) - **内存占用**: ~2GB → ~512MB - **部署复杂度**: 高 → 低 ### 功能保持 - ✅ 用户管理功能完整保留 - ✅ AI对话功能完整保留 - ✅ 认证授权功能完整保留 - ✅ 数据记录功能完整保留 - ✅ WebSocket功能完整保留 - ✅ 其他业务功能完整保留 ### 访问地址 - **前端**: http://47.111.10.27/emotion/happy/ - **后端API**: http://47.111.10.27:8080/api/ - **健康检查**: http://47.111.10.27:8080/actuator/health ## ⚠️ 风险控制 ### 数据安全 - 在重构前完整备份数据库 - 保留原有微服务代码作为备份 - 分阶段部署,确保可回滚 ### 功能完整性 - 详细的功能对比检查 - 完整的测试用例覆盖 - 用户验收测试 ### 性能保证 - 监控内存和CPU使用 - 压力测试验证 - 性能基准对比 --- **📝 说明**: 此计划预计总耗时4-5小时,建议分阶段执行,每个阶段完成后进行验证再继续下一阶段。