# 情绪博物馆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 17 3.0.2 2022.0.0 2022.0.0.0 8.0.33 7.0.8 3.5.3.1 ``` --- ## 🔧 核心配置设计 ### 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 # 统计事件 ``` --- *接下来将按照此架构设计逐步创建各个微服务模块*