Files
happy-life-star/BACKEND_REFACTOR_PLAN.md
T
peanut 48df1d68d7 🎉 完成情感博物馆单体架构迁移和数据库集成
 主要完成内容:
- 完整的微服务到单体架构迁移
- 数据库实体类和服务层实现
- 用户认证和管理功能
- AI对话功能集成
- WebSocket实时通信
- 情绪记录管理
- 数据库初始化脚本
- 生产环境部署配置

🏗️ 技术栈:
- Spring Boot 2.7.18 单体架构
- MySQL数据库集成
- JWT认证机制
- WebSocket支持
- Coze AI API集成
- 完整的REST API接口

📊 性能优化:
- 内存使用降低82% (2GB → 363MB)
- 启动时间缩短83% (5分钟 → 30秒)
- 服务数量减少90% (10个 → 1个)
- 部署复杂度大幅简化

🌐 API接口:
- 26个REST API接口
- 3个WebSocket端点
- 完整的CRUD操作
- 数据库读写功能

🚀 部署状态:
- 服务器: 47.111.10.27:8080
- 数据库: emotion (MySQL)
- 前端: http://47.111.10.27/emotion/happy/
- 健康检查: /api/health
2025-07-22 20:29:29 +08:00

8.3 KiB

🏗️ 后端架构重构计划:微服务 → 单体服务

📋 项目概述

🎯 重构目标

  • : 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配置

# 目标: 配置Nacos使用MySQL数据库和鉴权
- 修改 /data/programs/nacos/conf/application.properties
- 配置MySQL数据源
- 启用鉴权功能
- 重启Nacos服务

1.2 验证基础设施

# 验证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 依赖管理

<!-- 核心依赖 -->
- 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 配置文件整合

# 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 创建构建脚本

# build-single.sh
- Maven clean package
- 生成可执行JAR包
- 验证构建结果

4.2 创建部署脚本

# deploy-single.sh
- 停止旧的微服务
- 清理旧的部署文件
- 上传新的JAR包
- 启动单体服务
- 健康检查

4.3 创建服务管理脚本

# service-control.sh
- start: 启动服务
- stop: 停止服务
- restart: 重启服务
- status: 查看状态
- logs: 查看日志

阶段5: 清理和优化 (20分钟)

5.1 清理旧的微服务

# 停止所有微服务进程
# 删除旧的JAR包
# 清理日志文件
# 移除Nacos服务注册

5.2 优化系统配置

# 调整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功能完整保留
  • 其他业务功能完整保留

访问地址

⚠️ 风险控制

数据安全

  • 在重构前完整备份数据库
  • 保留原有微服务代码作为备份
  • 分阶段部署,确保可回滚

功能完整性

  • 详细的功能对比检查
  • 完整的测试用例覆盖
  • 用户验收测试

性能保证

  • 监控内存和CPU使用
  • 压力测试验证
  • 性能基准对比

📝 说明: 此计划预计总耗时4-5小时,建议分阶段执行,每个阶段完成后进行验证再继续下一阶段。