实战项目概述
1. 项目背景
1.1 项目介绍
本项目是一个电商微服务系统,包含用户、商品、订单、支付等核心模块,采用 Spring Boot 4 + Spring Cloud 2025 技术栈开发。
1.2 项目目标
- 掌握微服务架构设计
- 实践 Spring Boot 4 新特性
- 学习 Spring Cloud 2025 组件
- 理解分布式系统开发
2. 技术选型
2.1 核心技术
| 技术 | 版本 | 说明 |
|---|---|---|
| Java | 21 | LTS 版本,支持虚拟线程 |
| Spring Boot | 4.0 | 最新版本 |
| Spring Cloud | 2025.1.1 | Oakwood 版本 |
| Spring Security | 7.0 | 安全框架 |
| Spring Data JPA | 3.3 | 数据访问 |
| MySQL | 8.0 | 关系型数据库 |
| Redis | 7.0 | 缓存数据库 |
| RabbitMQ | 3.12 | 消息队列 |
| Nacos | 2.3 | 服务发现/配置中心 |
| Docker | 24.0 | 容器化 |
| Kubernetes | 1.28 | 容器编排 |
2.2 技术架构
技术架构图:
┌─────────────────────────────────────────────────────────────┐
│ 客户端层 │
│ (Web / Mobile / API) │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ API 网关层 │
│ (Spring Cloud Gateway) │
│ 路由 / 认证 / 限流 / 熔断 / 日志 │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ 服务层 │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │用户服务 │ │商品服务 │ │订单服务 │ │支付服务 │ │
│ └─────────┘ └─────────┘ └─────────┘ └─────────┘ │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │库存服务 │ │通知服务 │ │搜索服务 │ │
│ └─────────┘ └─────────┘ └─────────┘ │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ 基础设施层 │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ MySQL │ │ Redis │ │RabbitMQ │ │ Nacos │ │
│ └─────────┘ └─────────┘ └─────────┘ └─────────┘ │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ Zipkin │ │Prometheus│ │ Grafana │ │
│ └─────────┘ └─────────┘ └─────────┘ │
└─────────────────────────────────────────────────────────────┘3. 服务划分
3.1 服务列表
| 服务 | 端口 | 说明 |
|---|---|---|
| gateway-service | 8080 | API 网关 |
| user-service | 8081 | 用户服务 |
| product-service | 8082 | 商品服务 |
| order-service | 8083 | 订单服务 |
| payment-service | 8084 | 支付服务 |
| inventory-service | 8085 | 库存服务 |
| notification-service | 8086 | 通知服务 |
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.yml6. 开发环境
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 个独立数据库 |
| 项目结构 | 模块化、分层架构 |
下一章将学习项目初始化。