🎉 完成情感博物馆单体架构迁移和数据库集成
✅ 主要完成内容: - 完整的微服务到单体架构迁移 - 数据库实体类和服务层实现 - 用户认证和管理功能 - 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
This commit is contained in:
@@ -0,0 +1,307 @@
|
||||
# 🏗️ 后端架构重构计划:微服务 → 单体服务
|
||||
|
||||
## 📋 项目概述
|
||||
|
||||
### 🎯 重构目标
|
||||
- **从**: 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小时,建议分阶段执行,每个阶段完成后进行验证再继续下一阶段。
|
||||
Reference in New Issue
Block a user