Files
happy-life-star/Spring Cloud Alibaba微服务架构设计.md
T

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+


📋 架构分析

业务模块分析

基于功能需求文档分析,情绪博物馆包含以下核心业务模块:

  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: 对象存储

🏗️ 微服务架构设计

服务拆分策略

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周)

  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 (探索数据)

消息队列设计

# RocketMQ Topic设计
topics:
  - emotion-user-events      # 用户事件
  - emotion-conversation     # 对话事件
  - emotion-record-events    # 情绪记录事件
  - emotion-growth-events    # 成长事件
  - emotion-explore-events   # 探索事件
  - emotion-reward-events    # 奖励事件
  - emotion-stats-events     # 统计事件

接下来将按照此架构设计逐步创建各个微服务模块