VortMall 技术指南
VortMall 微服务技术栈说明
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 | 与 Spring Cloud 2025.x 匹配 |
二、核心框架
2.1 基础框架
| 技术 | 版本 | 用途 | 官方文档 |
|---|---|---|---|
| Java | 21 | 编程语言 | Oracle Java |
| Spring Boot | 4.0.1 | 应用框架 | Spring Boot |
| Spring Cloud | 2025.1.0 | 微服务框架 | Spring Cloud |
| Spring Cloud Alibaba | 2025.1.0.0 | 微服务组件 | SCA |
| Maven | 3.8+ | 构建工具 | Maven |
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 本地开发环境
# 1. 启动基础设施 (Docker Compose)
cd deployment/DockerCompose
docker-compose up -d mysql redis nacos rocketmq
# 2. 等待服务就绪后,启动网关
cd vortmall-gateway
mvn spring-boot:run
# 3. 启动业务服务
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
大纲
VortMall 微服务技术栈说明
一、技术栈概览
1.1 技术栈全景图
1.2 版本兼容性矩阵
二、核心框架
2.1 基础框架
2.2 微服务组件
三、数据层技术栈
3.1 数据库
3.2 缓存
3.3 搜索引擎
四、消息队列
4.1 消息中间件
4.2 IoT 消息
五、安全认证
5.1 认证授权
六、任务调度
七、日志与监控
7.1 日志框架
7.2 链路追踪
八、API 文档
九、工具类库
十、第三方集成
10.1 支付集成
10.2 云服务集成
10.3 验证码
十一、项目模块架构
11.1 模块总览
11.2 服务端口规划
11.3 DDD 分层架构
十二、基础设施依赖
12.1 必需组件
12.2 可选组件
十三、开发环境要求
13.1 必需软件
13.2 IDE 插件推荐
十四、快速启动指南
14.1 本地开发环境
14.2 配置中心 (Nacos)
十五、技术选型对比
15.1 为什么选择当前技术栈
15.2 明确不使用的技术
十六、版本升级记录
赣公网安备36010902001041号