Skip to content

实战项目概述

1. 项目背景

1.1 项目介绍

本项目是一个电商微服务系统,包含用户、商品、订单、支付等核心模块,采用 Spring Boot 4 + Spring Cloud 2025 技术栈开发。

1.2 项目目标

  • 掌握微服务架构设计
  • 实践 Spring Boot 4 新特性
  • 学习 Spring Cloud 2025 组件
  • 理解分布式系统开发

2. 技术选型

2.1 核心技术

技术版本说明
Java21LTS 版本,支持虚拟线程
Spring Boot4.0最新版本
Spring Cloud2025.1.1Oakwood 版本
Spring Security7.0安全框架
Spring Data JPA3.3数据访问
MySQL8.0关系型数据库
Redis7.0缓存数据库
RabbitMQ3.12消息队列
Nacos2.3服务发现/配置中心
Docker24.0容器化
Kubernetes1.28容器编排

2.2 技术架构

技术架构图:

┌─────────────────────────────────────────────────────────────┐
│                        客户端层                              │
│                    (Web / Mobile / API)                     │
└─────────────────────────────────────────────────────────────┘


┌─────────────────────────────────────────────────────────────┐
│                      API 网关层                              │
│              (Spring Cloud Gateway)                         │
│         路由 / 认证 / 限流 / 熔断 / 日志                      │
└─────────────────────────────────────────────────────────────┘


┌─────────────────────────────────────────────────────────────┐
│                      服务层                                  │
│  ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐          │
│  │用户服务 │ │商品服务 │ │订单服务 │ │支付服务 │          │
│  └─────────┘ └─────────┘ └─────────┘ └─────────┘          │
│  ┌─────────┐ ┌─────────┐ ┌─────────┐                      │
│  │库存服务 │ │通知服务 │ │搜索服务 │                      │
│  └─────────┘ └─────────┘ └─────────┘                      │
└─────────────────────────────────────────────────────────────┘


┌─────────────────────────────────────────────────────────────┐
│                      基础设施层                              │
│  ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐          │
│  │  MySQL  │ │  Redis  │ │RabbitMQ │ │  Nacos  │          │
│  └─────────┘ └─────────┘ └─────────┘ └─────────┘          │
│  ┌─────────┐ ┌─────────┐ ┌─────────┐                      │
│  │ Zipkin  │ │Prometheus│ │ Grafana │                     │
│  └─────────┘ └─────────┘ └─────────┘                      │
└─────────────────────────────────────────────────────────────┘

3. 服务划分

3.1 服务列表

服务端口说明
gateway-service8080API 网关
user-service8081用户服务
product-service8082商品服务
order-service8083订单服务
payment-service8084支付服务
inventory-service8085库存服务
notification-service8086通知服务

3.2 服务职责

用户服务 (user-service)
├── 用户注册/登录
├── 用户信息管理
├── 用户权限管理
└── 用户地址管理

商品服务 (product-service)
├── 商品管理
├── 分类管理
├── 品牌管理
└── 商品搜索

订单服务 (order-service)
├── 订单创建
├── 订单查询
├── 订单状态管理
└── 订单评价

支付服务 (payment-service)
├── 支付处理
├── 退款处理
└── 支付状态管理

库存服务 (inventory-service)
├── 库存查询
├── 库存扣减
└── 库存恢复

通知服务 (notification-service)
├── 邮件通知
├── 短信通知
└── 站内信

4. 数据库设计

4.1 数据库划分

数据库划分:

├── user_db (用户数据库)
│   ├── users (用户表)
│   ├── user_addresses (地址表)
│   └── user_roles (角色表)

├── product_db (商品数据库)
│   ├── products (商品表)
│   ├── categories (分类表)
│   └── brands (品牌表)

├── order_db (订单数据库)
│   ├── orders (订单表)
│   ├── order_items (订单项表)
│   └── order_logs (订单日志表)

├── payment_db (支付数据库)
│   ├── payments (支付表)
│   └── refunds (退款表)

└── inventory_db (库存数据库)
    └── inventories (库存表)

4.2 核心表结构

sql
-- 用户表
CREATE TABLE users (
    id BIGINT PRIMARY KEY AUTO_INCREMENT,
    username VARCHAR(50) NOT NULL UNIQUE,
    password VARCHAR(255) NOT NULL,
    email VARCHAR(100) UNIQUE,
    phone VARCHAR(20),
    status VARCHAR(20) DEFAULT 'ACTIVE',
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

-- 商品表
CREATE TABLE products (
    id BIGINT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(200) NOT NULL,
    description TEXT,
    price DECIMAL(10, 2) NOT NULL,
    stock INT DEFAULT 0,
    category_id BIGINT,
    brand_id BIGINT,
    status VARCHAR(20) DEFAULT 'ACTIVE',
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

-- 订单表
CREATE TABLE orders (
    id BIGINT PRIMARY KEY AUTO_INCREMENT,
    order_no VARCHAR(50) NOT NULL UNIQUE,
    user_id BIGINT NOT NULL,
    total_amount DECIMAL(10, 2) NOT NULL,
    status VARCHAR(20) DEFAULT 'PENDING',
    payment_status VARCHAR(20) DEFAULT 'UNPAID',
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

-- 订单项表
CREATE TABLE order_items (
    id BIGINT PRIMARY KEY AUTO_INCREMENT,
    order_id BIGINT NOT NULL,
    product_id BIGINT NOT NULL,
    product_name VARCHAR(200),
    quantity INT NOT NULL,
    price DECIMAL(10, 2) NOT NULL,
    amount DECIMAL(10, 2) NOT NULL
);

5. 项目结构

5.1 目录结构

ecommerce-microservices/
├── pom.xml                          # 父 POM
├── gateway-service/                 # 网关服务
│   ├── src/main/java/
│   └── src/main/resources/
├── user-service/                    # 用户服务
│   ├── src/main/java/
│   └── src/main/resources/
├── product-service/                 # 商品服务
│   ├── src/main/java/
│   └── src/main/resources/
├── order-service/                   # 订单服务
│   ├── src/main/java/
│   └── src/main/resources/
├── payment-service/                 # 支付服务
│   ├── src/main/java/
│   └── src/main/resources/
├── inventory-service/               # 库存服务
│   ├── src/main/java/
│   └── src/main/resources/
├── notification-service/            # 通知服务
│   ├── src/main/java/
│   └── src/main/resources/
├── common/                          # 公共模块
│   ├── src/main/java/
│   └── src/main/resources/
├── docker/                          # Docker 配置
│   ├── docker-compose.yml
│   └── Dockerfile
└── k8s/                            # Kubernetes 配置
    ├── gateway-service/
    ├── user-service/
    └── ...

5.2 服务内部结构

user-service/
├── src/main/java/com/example/user/
│   ├── UserServiceApplication.java
│   ├── controller/
│   │   ├── UserController.java
│   │   └── AuthController.java
│   ├── service/
│   │   ├── UserService.java
│   │   └── AuthService.java
│   ├── repository/
│   │   └── UserRepository.java
│   ├── entity/
│   │   └── User.java
│   ├── dto/
│   │   ├── UserRequest.java
│   │   └── UserResponse.java
│   ├── client/
│   │   └── OrderClient.java
│   ├── config/
│   │   └── SecurityConfig.java
│   └── exception/
│       └── UserNotFoundException.java
└── src/main/resources/
    ├── application.yml
    └── bootstrap.yml

6. 开发环境

6.1 环境要求

  • JDK 21+
  • Maven 3.9+
  • Docker 24.0+
  • Kubernetes 1.28+ (可选)
  • MySQL 8.0+
  • Redis 7.0+
  • RabbitMQ 3.12+
  • Nacos 2.3+

6.2 开发工具

  • IntelliJ IDEA 2024+
  • Visual Studio Code
  • Postman
  • DBeaver
  • Redis Desktop Manager

7. 小结

本章介绍了实战项目的整体概况:

内容要点
项目背景电商微服务系统
技术选型Spring Boot 4 + Spring Cloud 2025
服务划分7 个核心服务
数据库设计5 个独立数据库
项目结构模块化、分层架构

下一章将学习项目初始化。