7.2 KiB
7.2 KiB
情绪博物馆Spring Cloud Alibaba微服务架构设计
版本: v1.0
创建时间: 2025-07-12
技术栈: Spring Cloud Alibaba 2022.0.0.0
Spring Boot版本: 3.0.2
JDK版本: 17+
📋 架构分析
业务模块分析
基于功能需求文档分析,情绪博物馆包含以下核心业务模块:
- 用户认证模块 - 账号、密码、手机号登录
- AI对话模块 - 智能对话、情绪分析
- 情绪记录模块 - 情绪日历、记录管理
- 成长课题模块 - 课题系统、互动记录
- 地图探索模块 - 地点标记、社区分享
- 成就奖励模块 - 成就系统、积分奖励
- 用户统计模块 - 数据统计、分析报告
技术架构选型
Spring Cloud Alibaba 2022.0.0.0 组件
- Nacos: 服务注册发现 + 配置中心
- Sentinel: 流量控制、熔断降级
- Seata: 分布式事务
- Gateway: API网关
- OpenFeign: 服务间调用
- Dubbo: RPC通信(可选)
基础设施组件
- MySQL 8.0: 主数据库
- Redis 7.0: 缓存 + 分布式锁
- RocketMQ: 消息队列
- Elasticsearch: 搜索引擎
- MinIO: 对象存储
🏗️ 微服务架构设计
服务拆分策略
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+
- ✅ 生产环境验证充分
- ✅ 社区活跃,文档完善
- ✅ 阿里云原生支持
版本依赖关系
<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配置中心
# 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
数据库配置
# 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配置
# 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周)
-
父工程创建
- Maven多模块项目结构
- 版本依赖管理
- 公共组件抽取
-
注册中心部署
- Nacos Server安装配置
- 命名空间和分组设置
- 配置文件管理
-
数据库初始化
- MySQL数据库创建
- 表结构和索引创建
- 初始数据导入
Phase 2: 核心服务开发 (2-3周)
-
网关服务 (emotion-gateway)
- 路由配置
- 统一鉴权
- 限流熔断
-
用户服务 (emotion-user)
- 用户注册登录
- JWT Token管理
- 用户资料CRUD
-
AI对话服务 (emotion-ai)
- 对话管理
- 消息处理
- AI接口集成
Phase 3: 业务服务开发 (3-4周)
- 情绪记录服务 (emotion-record)
- 成长课题服务 (emotion-growth)
- 地图探索服务 (emotion-explore)
- 成就奖励服务 (emotion-reward)
Phase 4: 数据服务开发 (1-2周)
- 统计分析服务 (emotion-stats)
- 监控告警配置
- 性能优化调试
📊 服务间通信设计
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 (探索数据)
消息队列设计
# RocketMQ Topic设计
topics:
- emotion-user-events # 用户事件
- emotion-conversation # 对话事件
- emotion-record-events # 情绪记录事件
- emotion-growth-events # 成长事件
- emotion-explore-events # 探索事件
- emotion-reward-events # 奖励事件
- emotion-stats-events # 统计事件
接下来将按照此架构设计逐步创建各个微服务模块