VortMall 微服务技术栈说明
本文档详细说明 VortMall 微服务电商平台所采用的技术栈及其版本信息。
一、技术栈概览
1.1 技术栈全景图
┌─────────────────────────────────────────────────────────────────────────────┐
│ VortMall 微服务技术栈 │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ 客户端 │ │ 管理后台 │ │ 第三方系统 │ │
│ └──────┬───────┘ └──────┬───────┘ └──────┬───────┘ │
│ │ │ │ │
│ └────────────────────┼────────────────────┘ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────────────┐ │
│ │ Spring Cloud Gateway │ │
│ │ (统一入口 + 路由 + 限流) │ │
│ └─────────────────────────────┬───────────────────────────────────┘ │
│ │ │
│ ┌─────────────────────────────┼───────────────────────────────────┐ │
│ │ 服务集群 │ │
│ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │
│ │ │ 商品服务│ │ 订单服务│ │ 用户服务│ │ 支付服务│ │ 营销服务│ │ │
│ │ └────┬────┘ └────┬────┘ └────┬────┘ └────┬────┘ └────┬────┘ │ │
│ │ │ │ │ │ │ │ │
│ │ ┌────┴───────────┴───────────┴───────────┴───────────┴────┐ │ │
│ │ │ OpenFeign (服务调用) │ │ │
│ │ └─────────────────────────────────────────────────────────┘ │ │
│ └─────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ┌─────────────────────────────┼───────────────────────────────────┐ │
│ │ 基础设施 │ │
│ │ ┌─────────────────────────────────────────────────────────┐ │ │
│ │ │ Nacos (服务注册中心 + 配置中心) │ │ │
│ │ └─────────────────────────────────────────────────────────┘ │ │
│ │ │ │
│ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │
│ │ │ MySQL │ │ Redis │ │ RocketMQ │ │ ES │ │ │
│ │ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │ │
│ │ │ │
│ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │
│ │ │ Seata │ │ XXL-Job │ │ Sentinel │ │Skywalking│ │ │
│ │ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │ │
│ └─────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
1.2 版本兼容性矩阵
| 组件 | 版本 | 兼容性说明 |
|---|
| Java | 21 | JDK 21 LTS 版本 |
| Spring Boot | 4.0.1 | 最新稳定版 |
| Spring Cloud | 2025.1.0 | 与 Spring Boot 4.x 匹配 |
| Spring Cloud Alibaba | 2025.1.0.0-SNAPSHOT | 与 Spring Cloud 2025.x 匹配 |
二、核心框架
2.1 基础框架
2.2 微服务组件
| 技术 | 版本 | 用途 | 说明 |
|---|
| Spring Cloud Gateway | 4.1.x | API 网关 | 统一入口、路由、限流、鉴权 |
| Nacos | 2.x | 服务注册与配置中心 | 服务发现、动态配置管理 |
| OpenFeign | 4.1.x | 声明式 HTTP 客户端 | 服务间调用 |
| LoadBalancer | 4.1.x | 负载均衡 | 客户端负载均衡 |
| Sentinel | 1.8.x | 流量控制 | 限流、熔断、降级 |
| Seata | 2.0.x | 分布式事务 | AT/TCC/SAGA 模式 |
三、数据层技术栈
3.1 数据库
| 技术 | 版本 | 用途 | 配置参考 |
|---|
| MySQL | 8.0.33 | 关系型数据库 | 主数据存储 |
| MyBatis Plus | 3.5.15 | ORM 框架 | 数据访问层 |
| Druid | 1.2.24 | 连接池 | 数据库连接管理、SQL 监控 |
| H2 | 2.2.224 | 内存数据库 | 单元测试 |
数据库连接配置示例:
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/vortmall_product?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
username: root
password: xxxxxx
type: com.alibaba.druid.pool.DruidDataSource
druid:
initial-size: 5
min-idle: 5
max-active: 20
max-wait: 60000
3.2 缓存
| 技术 | 版本 | 用途 | 说明 |
|---|
| Redis | 7.x | 分布式缓存 | 会话、热点数据、分布式锁 |
| Redisson | 3.36.0 | Redis 客户端 | 分布式锁、分布式集合 |
| Caffeine | 3.1.8 | 本地缓存 | 二级缓存、JVM 内缓存 |
| JetCache | 2.7.6 | 缓存框架 | 统一缓存抽象、多级缓存 |
多级缓存架构:
┌────────────────────────────────────────────────────────────┐
│ 应用层 │
└───────────────────────────┬────────────────────────────────┘
│
▼
┌────────────────────────────────────────────────────────────┐
│ JetCache (统一缓存抽象) │
└───────────────────────────┬────────────────────────────────┘
│
┌───────────────┼───────────────┐
▼ │ ▼
┌───────────────────┐ │ ┌───────────────────┐
│ Caffeine (L1) │ │ │ Redis (L2) │
│ 本地缓存 │ │ │ 分布式缓存 │
│ 响应时间: <1ms │ │ │ 响应时间: 1-5ms │
└───────────────────┘ │ └───────────────────┘
│
▼
┌───────────────────────┐
│ MySQL │
│ 响应时间: 10-50ms │
└───────────────────────┘
3.3 搜索引擎
| 技术 | 版本 | 用途 | 说明 |
|---|
| Elasticsearch | 8.x | 全文搜索 | 商品搜索、日志分析 |
四、消息队列
4.1 消息中间件
| 技术 | 版本 | 用途 | 说明 |
|---|
| RocketMQ | 5.x | 消息队列 | 异步消息、订单处理、库存同步 |
| Spring Cloud Stream | - | 消息抽象 | 统一消息编程模型 |
RocketMQ 配置示例:
rocketmq:
name-server: localhost:9876
producer:
group: vortmall-producer-group
send-message-timeout: 3000
retry-times-when-send-failed: 3
4.2 IoT 消息
| 技术 | 版本 | 用途 | 说明 |
|---|
| EMQX | 5.x | MQTT Broker | IoT 设备通信 |
| Paho MQTT | 1.2.5 | MQTT 客户端 | 设备消息收发 |
五、安全认证
5.1 认证授权
| 技术 | 版本 | 用途 | 说明 |
|---|
| Sa-Token | 1.40.0 | 权限认证框架 | 登录认证、权限校验、会话管理 |
Sa-Token 特性:
- 登录认证、权限认证、Session 会话
- 踢人下线、账号封禁
- 多账号认证体系(管理员/用户)
- 单点登录(SSO)
- OAuth 2.0 授权认证
- 分布式会话(Redis 集成)
多账号体系配置:
StpAdminUtil.login(adminId);
StpAdminUtil.checkPermission("product:add");
StpMemberUtil.login(memberId);
StpMemberUtil.checkLogin();
六、任务调度
| 技术 | 版本 | 用途 | 说明 |
|---|
| XXL-Job | 2.4.2 | 分布式任务调度 | 定时任务、分片任务 |
XXL-Job 特性:
- 动态任务管理(Web 控制台)
- 任务分片广播
- 失败重试和告警
- 任务执行日志
- GLUE 模式(在线编辑代码)
配置示例:
xxl:
job:
admin:
addresses: http://localhost:8080/xxl-job-admin
executor:
appname: vortmall-product-executor
port: 9999
logpath: /data/applogs/xxl-job/jobhandler
logretentiondays: 30
七、日志与监控
7.1 日志框架
| 技术 | 版本 | 用途 | 说明 |
|---|
| Logback | Spring Boot 内置 | 日志实现 | 日志输出 |
| SLF4J | Spring Boot 内置 | 日志门面 | 统一日志 API |
| Logstash Encoder | 8.0 | JSON 日志 | ELK 集成 |
7.2 链路追踪
| 技术 | 版本 | 用途 | 说明 |
|---|
| Skywalking | 9.x | APM 系统 | 链路追踪、性能监控 |
日志配置示例:
<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<destination>localhost:5000</destination>
<encoder class="net.logstash.logback.encoder.LogstashEncoder">
<customFields>{"app_name":"vortmall-product"}</customFields>
</encoder>
</appender>
八、API 文档
| 技术 | 版本 | 用途 | 说明 |
|---|
| SpringDoc OpenAPI | 2.8.0 | API 文档 | Swagger UI、OpenAPI 3.0 |
访问地址:
- Swagger UI:
http://localhost:8080/swagger-ui.html
- OpenAPI JSON:
http://localhost:8080/v3/api-docs
九、工具类库
| 技术 | 版本 | 用途 | 说明 |
|---|
| Lombok | 1.18.36 | 代码简化 | 自动生成 getter/setter/构造器 |
| Hutool | 5.8.35 | Java 工具库 | 通用工具类集合 |
| Guava | 33.3.1-jre | Google 工具库 | 集合、缓存、并发工具 |
| FastJSON2 | 2.0.53 | JSON 处理 | JSON 序列化/反序列化 |
| Apache Commons Lang3 | 3.17.0 | 通用工具 | 字符串、对象、反射工具 |
| Apache POI | 5.2.5 | Office 文档 | Excel 导入导出 |
十、第三方集成
10.1 支付集成
| 技术 | 版本 | 用途 |
|---|
| 支付宝 SDK | 3.1.35.ALL | 支付宝支付 |
| 微信支付 SDK | 4.6.0 | 微信支付 |
| PayPal SDK | 2.0.0 | PayPal 国际支付 |
10.2 云服务集成
| 技术 | 版本 | 用途 |
|---|
| 阿里云短信 SDK | 2.0.24 | 短信验证码 |
| 阿里云 OSS | - | 对象存储 |
10.3 验证码
| 技术 | 版本 | 用途 |
|---|
| AJ-Captcha | 1.4.0 | 滑动验证码 |
十一、项目模块架构
11.1 模块总览
VortMall-Api/
├── vortmall-gateway/ # 网关服务
├── vortmall-auth/ # 认证服务
├── vortmall-biz/ # 业务服务聚合
│ ├── vortmall-biz-product/ # 商品服务
│ ├── vortmall-biz-order/ # 订单服务
│ ├── vortmall-biz-user/ # 用户服务
│ ├── vortmall-biz-payment/ # 支付服务
│ ├── vortmall-biz-marketing/ # 营销服务
│ ├── vortmall-biz-logistics/ # 物流服务
│ ├── vortmall-biz-aftersales/ # 售后服务
│ ├── vortmall-biz-system/ # 系统管理服务
│ ├── vortmall-biz-file/ # 文件服务
│ ├── vortmall-biz-message/ # 消息服务
│ ├── vortmall-biz-content/ # 内容服务
│ ├── vortmall-biz-decoration/ # 装修服务
│ ├── vortmall-biz-distribution/ # 分销服务
│ ├── vortmall-biz-organize/ # 组织服务
│ └── vortmall-biz-pos/ # POS 收银服务
├── vortmall-common/ # 公共模块聚合
│ ├── vortmall-common-core/ # 核心工具
│ ├── vortmall-common-web/ # Web 组件
│ ├── vortmall-common-datasource/# 数据源配置
│ ├── vortmall-common-cache/ # 缓存组件
│ ├── vortmall-common-nacos/ # Nacos 集成
│ ├── vortmall-common-sa-token/ # Sa-Token 集成
│ ├── vortmall-common-distribute_id/ # 分布式 ID
│ ├── vortmall-common-mq/ # 消息队列
│ ├── vortmall-common-seata/ # 分布式事务
│ ├── vortmall-common-job/ # 任务调度
│ ├── vortmall-common-lock/ # 分布式锁
│ ├── vortmall-common-es/ # Elasticsearch
│ ├── vortmall-common-excel/ # Excel 处理
│ ├── vortmall-common-log/ # 日志组件
│ ├── vortmall-common-emqx/ # MQTT 集成
│ └── vortmall-common-outbox/ # Outbox 模式
└── vortmall-feign/ # Feign 客户端聚合
├── vortmall-feign-product/ # 商品服务 Feign
├── vortmall-feign-order/ # 订单服务 Feign
├── vortmall-feign-user/ # 用户服务 Feign
├── vortmall-feign-payment/ # 支付服务 Feign
└── ... # 其他服务 Feign
11.2 服务端口规划
| 服务 | 端口 | 说明 |
|---|
| vortmall-gateway | 8080 | API 网关 |
| vortmall-auth | 8081 | 认证服务 |
| vortmall-biz-product | 8100 | 商品服务 |
| vortmall-biz-order | 8200 | 订单服务 |
| vortmall-biz-user | 8300 | 用户服务 |
| vortmall-biz-payment | 8400 | 支付服务 |
| vortmall-biz-marketing | 8500 | 营销服务 |
| vortmall-biz-system | 8600 | 系统服务 |
| vortmall-biz-file | 8700 | 文件服务 |
| vortmall-biz-message | 8800 | 消息服务 |
11.3 DDD 分层架构
每个业务服务内部采用 DDD 四层架构:
vortmall-biz-{domain}/
├── adapter/ # 适配层(Controller)
│ ├── AdminXxxController.java # 管理端接口
│ └── ApiXxxController.java # 用户端接口
├── application/ # 应用层(Service)
│ ├── XxxServiceI.java # 服务接口
│ ├── XxxServiceImpl.java # 服务实现
│ ├── dto/ # 数据传输对象
│ └── vo/ # 视图对象
├── domain/ # 领域层
│ ├── {entity}/ # 聚合/实体
│ ├── gateway/ # 领域网关接口
│ └── service/ # 领域服务
└── infrastructure/ # 基础设施层
├── XxxGatewayImpl.java # 网关实现
├── data/ # 数据对象 (DO)
└── mapper/ # MyBatis Mapper
十二、基础设施依赖
12.1 必需组件
| 组件 | 版本 | 默认端口 | 用途 |
|---|
| MySQL | 8.0+ | 3306 | 主数据库 |
| Redis | 7.0+ | 6379 | 缓存/会话 |
| Nacos | 2.5+ | 8848/9848 | 注册/配置中心 |
| RocketMQ | 5.x | 9876/10911 | 消息队列 |
12.2 可选组件
| 组件 | 版本 | 默认端口 | 用途 |
|---|
| Elasticsearch | 8.x | 9200/9300 | 全文搜索 |
| Seata Server | 2.0.x | 8091/7091 | 分布式事务协调 |
| XXL-Job Admin | 2.4.x | 8080 | 任务调度控制台 |
| Sentinel Dashboard | 1.8.x | 8858 | 限流熔断控制台 |
| Skywalking OAP | 9.x | 11800/12800 | 链路追踪服务端 |
| EMQX | 5.x | 1883/8083/18083 | MQTT Broker |
十三、开发环境要求
13.1 必需软件
| 软件 | 版本要求 | 说明 |
|---|
| JDK | 21+ | 推荐 Oracle JDK 或 Eclipse Temurin |
| Maven | 3.8+ | 构建工具 |
| Git | 2.x+ | 版本控制 |
| IDE | IntelliJ IDEA 2024+ | 推荐使用 Ultimate 版本 |
13.2 IDE 插件推荐
| 插件 | 用途 |
|---|
| Lombok | Lombok 支持 |
| MyBatisX | MyBatis 增强 |
| Spring Boot Assistant | Spring Boot 开发辅助 |
| RestfulTool | RESTful API 测试 |
| GitToolBox | Git 增强 |
十四、快速启动指南
14.1 本地开发环境
cd deployment/DockerCompose
docker-compose up -d mysql redis nacos rocketmq
cd vortmall-gateway
mvn spring-boot:run
cd vortmall-biz/vortmall-biz-product
mvn spring-boot:run
14.2 配置中心 (Nacos)
所有服务配置统一托管在 Nacos 配置中心:
| 配置文件 | 说明 |
|---|
vortmall-common.yml | 公共配置 |
vortmall-product.yml | 商品服务配置 |
vortmall-order.yml | 订单服务配置 |
| ... | 其他服务配置 |
十五、技术选型对比
15.1 为什么选择当前技术栈
| 领域 | 选择 | 原因 |
|---|
| ORM | MyBatis Plus | SQL 可控、性能优化方便、团队熟悉 |
| 认证 | Sa-Token | 简单易用、功能完整、国内社区活跃 |
| 注册中心 | Nacos | 服务发现+配置中心一体化、阿里生态 |
| 消息队列 | RocketMQ | 高性能、支持事务消息、阿里生态 |
| 缓存 | Redis + Redisson | 功能丰富、分布式锁支持好 |
| 任务调度 | XXL-Job | 简单易用、可视化控制台 |
15.2 明确不使用的技术
| 技术 | 原因 |
|---|
| Hibernate/JPA | 团队不熟悉、SQL 不可控 |
| Spring Security | 配置复杂、学习曲线陡峭 |
| Eureka | Netflix 已停止维护 |
| Ribbon | 已废弃,使用 LoadBalancer |
| Hystrix | 已停止维护,使用 Sentinel |
| Zuul | 性能差,使用 Gateway |
| FastJSON 1.x | 安全漏洞,使用 FastJSON2 |
十六、版本升级记录
| 日期 | 版本变更 | 说明 |
|---|
| 2026-01 | Spring Boot 3.2.2 → 4.0.1 | 升级至 Spring Boot 4.x |
| 2026-01 | Spring Cloud 2023.0.0 → 2025.1.0 | 升级至 Spring Cloud 2025.x |
| 2026-01 | SCA 2023.0.1.2 → 2025.1.0.0 | 配合 Spring Cloud 升级 |
文档维护者: VortMall 技术团队
最后更新: 2026-01-30
文档版本: v1.0