feat: 完成项目整理优化和生产环境配置

🧹 项目结构优化:
- 删除重复和过时的文件
- 整理文档到docs目录结构
- 优化配置文件到configs目录
- 创建清晰的PROJECT_STRUCTURE.md

🔧 中间件配置:
- 重启MySQL/Redis/Nacos中间件
- 使用现有数据目录,确保数据完整性
- 统一密码配置: MySQL(EmotionMuseum2025*#), Nacos(Peanut2817*#)

🌐 Nginx配置:
- 配置前端路径: /emotion-museum
- 配置API代理: /api/ -> 19000
- 配置WebSocket代理: /ws/ -> 19007
- 添加健康检查端点: /health

📋 部署脚本优化:
- restart-middleware.sh - 中间件重启脚本
- setup-nginx.sh - Nginx配置脚本
- cleanup-project.sh - 项目清理脚本
- one-click-deploy.sh - 一键部署脚本

📖 文档完善:
- DEPLOYMENT_FINAL.md - 最终部署指南
- PROJECT_STRUCTURE.md - 项目结构说明
- 完整的运维和故障排查指南

 生产环境就绪:
- 中间件: MySQL/Redis/Nacos 运行正常
- Nginx: 反向代理配置完成
- 访问地址: http://47.111.10.27/emotion-museum
- 健康检查: http://47.111.10.27/health

🎯 项目现状:
- 10个微服务模块完整
- 前后端分离架构
- 容器化部署
- 统一配置管理
- 完整的部署和运维体系
This commit is contained in:
2025-07-21 13:55:36 +08:00
parent 50c63f1b1a
commit 26f0cdd760
306 changed files with 1088 additions and 56000 deletions
@@ -0,0 +1,285 @@
# 情绪博物馆Spring Cloud Alibaba微服务架构设计
**版本**: v1.0
**创建时间**: 2025-07-12
**技术栈**: Spring Cloud Alibaba 2022.0.0.0
**Spring Boot版本**: 3.0.2
**JDK版本**: 17+
---
## 📋 架构分析
### 业务模块分析
基于功能需求文档分析,情绪博物馆包含以下核心业务模块:
1. **用户认证模块** - 账号、密码、手机号登录
2. **AI对话模块** - 智能对话、情绪分析
3. **情绪记录模块** - 情绪日历、记录管理
4. **成长课题模块** - 课题系统、互动记录
5. **地图探索模块** - 地点标记、社区分享
6. **成就奖励模块** - 成就系统、积分奖励
7. **用户统计模块** - 数据统计、分析报告
### 技术架构选型
#### Spring Cloud Alibaba 2022.0.0.0 组件
- **Nacos**: 服务注册发现 + 配置中心
- **Sentinel**: 流量控制、熔断降级
- **Seata**: 分布式事务
- **Gateway**: API网关
- **OpenFeign**: 服务间调用
- **Dubbo**: RPC通信(可选)
#### 基础设施组件
- **MySQL 8.0**: 主数据库
- **Redis 7.0**: 缓存 + 分布式锁
- **RocketMQ**: 消息队列
- **Elasticsearch**: 搜索引擎
- **MinIO**: 对象存储
---
## 🏗️ 微服务架构设计
### 服务拆分策略
```mermaid
graph TB
A[API Gateway] --> B[用户服务]
A --> C[AI对话服务]
A --> D[情绪记录服务]
A --> E[成长课题服务]
A --> F[地图探索服务]
A --> G[成就奖励服务]
A --> H[统计分析服务]
B --> I[MySQL-用户库]
C --> J[MySQL-对话库]
D --> K[MySQL-情绪库]
E --> L[MySQL-成长库]
F --> M[MySQL-地图库]
G --> N[MySQL-奖励库]
H --> O[MySQL-统计库]
P[Nacos] --> A
P --> B
P --> C
P --> D
P --> E
P --> F
P --> G
P --> H
Q[Redis] --> B
Q --> C
Q --> D
Q --> E
Q --> F
Q --> G
Q --> H
```
### 微服务清单
| 服务名称 | 端口 | 职责 | 数据库 |
|---------|------|------|--------|
| emotion-gateway | 8080 | API网关、路由、鉴权 | - |
| emotion-user | 8081 | 用户认证、资料管理 | user, user_stats |
| emotion-ai | 8082 | AI对话、情绪分析 | conversation, message |
| emotion-record | 8083 | 情绪记录、日历管理 | emotion_record |
| emotion-growth | 8084 | 成长课题、互动记录 | growth_topic, topic_interaction |
| emotion-explore | 8085 | 地图探索、社区分享 | location_pin, community_post, comment |
| emotion-reward | 8086 | 成就奖励、积分管理 | achievement, reward |
| emotion-stats | 8087 | 数据统计、分析报告 | 跨库查询 |
---
## 📦 技术版本选择
### Spring Cloud Alibaba 2022.0.0.0
这是当前最稳定的版本,具有以下优势:
- ✅ 与Spring Boot 3.0.x完美兼容
- ✅ 支持JDK 17+
- ✅ 生产环境验证充分
- ✅ 社区活跃,文档完善
- ✅ 阿里云原生支持
### 版本依赖关系
```xml
<properties>
<java.version>17</java.version>
<spring-boot.version>3.0.2</spring-boot.version>
<spring-cloud.version>2022.0.0</spring-cloud.version>
<spring-cloud-alibaba.version>2022.0.0.0</spring-cloud-alibaba.version>
<mysql.version>8.0.33</mysql.version>
<redis.version>7.0.8</redis.version>
<mybatis-plus.version>3.5.3.1</mybatis-plus.version>
</properties>
```
---
## 🔧 核心配置设计
### Nacos配置中心
```yaml
# application-dev.yml
spring:
cloud:
nacos:
discovery:
server-addr: localhost:8848
namespace: emotion-dev
group: DEFAULT_GROUP
config:
server-addr: localhost:8848
namespace: emotion-dev
group: DEFAULT_GROUP
file-extension: yml
shared-configs:
- data-id: common-mysql.yml
group: DEFAULT_GROUP
refresh: true
- data-id: common-redis.yml
group: DEFAULT_GROUP
refresh: true
```
### 数据库配置
```yaml
# common-mysql.yml
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/emotion_museum?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
username: ${DB_USERNAME:root}
password: ${DB_PASSWORD:123456}
hikari:
minimum-idle: 5
maximum-pool-size: 20
idle-timeout: 600000
max-lifetime: 1800000
connection-timeout: 30000
mybatis-plus:
configuration:
map-underscore-to-camel-case: true
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
global-config:
db-config:
id-type: assign_uuid
logic-delete-field: deleted
logic-delete-value: 1
logic-not-delete-value: 0
```
### Redis配置
```yaml
# common-redis.yml
spring:
data:
redis:
host: localhost
port: 6379
password: ${REDIS_PASSWORD:}
database: 0
timeout: 3000ms
lettuce:
pool:
max-active: 20
max-idle: 10
min-idle: 5
max-wait: 3000ms
```
---
## 🚀 实施计划
### Phase 1: 基础设施搭建 (1周)
1. **父工程创建**
- Maven多模块项目结构
- 版本依赖管理
- 公共组件抽取
2. **注册中心部署**
- Nacos Server安装配置
- 命名空间和分组设置
- 配置文件管理
3. **数据库初始化**
- MySQL数据库创建
- 表结构和索引创建
- 初始数据导入
### Phase 2: 核心服务开发 (2-3周)
1. **网关服务** (emotion-gateway)
- 路由配置
- 统一鉴权
- 限流熔断
2. **用户服务** (emotion-user)
- 用户注册登录
- JWT Token管理
- 用户资料CRUD
3. **AI对话服务** (emotion-ai)
- 对话管理
- 消息处理
- AI接口集成
### Phase 3: 业务服务开发 (3-4周)
1. **情绪记录服务** (emotion-record)
2. **成长课题服务** (emotion-growth)
3. **地图探索服务** (emotion-explore)
4. **成就奖励服务** (emotion-reward)
### Phase 4: 数据服务开发 (1-2周)
1. **统计分析服务** (emotion-stats)
2. **监控告警配置**
3. **性能优化调试**
---
## 📊 服务间通信设计
### API调用关系
```
emotion-gateway
├── emotion-user (用户认证)
├── emotion-ai (AI对话)
│ └── emotion-user (用户信息)
├── emotion-record (情绪记录)
│ └── emotion-user (用户验证)
├── emotion-growth (成长课题)
│ ├── emotion-user (用户信息)
│ └── emotion-reward (奖励发放)
├── emotion-explore (地图探索)
│ └── emotion-user (用户信息)
├── emotion-reward (成就奖励)
│ └── emotion-user (用户信息)
└── emotion-stats (统计分析)
├── emotion-user (用户数据)
├── emotion-ai (对话数据)
├── emotion-record (情绪数据)
├── emotion-growth (成长数据)
└── emotion-explore (探索数据)
```
### 消息队列设计
```yaml
# RocketMQ Topic设计
topics:
- emotion-user-events # 用户事件
- emotion-conversation # 对话事件
- emotion-record-events # 情绪记录事件
- emotion-growth-events # 成长事件
- emotion-explore-events # 探索事件
- emotion-reward-events # 奖励事件
- emotion-stats-events # 统计事件
```
---
*接下来将按照此架构设计逐步创建各个微服务模块*