架构说明
本文描述 ECShopX Java 后端的整体架构能力,作为全书技术栈「事实锚点」。细节命令与配置以仓库源码、docker-compose.yml 及 本地 / Docker 部署 为准。
软件架构
- 后端开发语言:Java 17(推荐 Eclipse Temurin 17)
- 后端技术框架:Spring Boot 3.5 + MyBatis-Plus 3.5;内嵌 Undertow 作为 HTTP 容器(默认开启
allow-unescaped-characters-in-url,兼容含特殊字符的历史 URL;POST Body 上限 64MB) - 工程组织:1 Bundle = 1 Maven Module;50+ 业务模块(
ecshopx-goods、ecshopx-orders等)由ecshopx-bootstrap聚合为单个 Spring Boot 应用运行,启动主类cn.shopex.ecshopx.EcshopxApplication - 前端开发语言:HTML5 / CSS3 / ES6 / 小程序开发框架(与 ECShopX 前端工程配套,本书不展开前端仓库细节)
- 前端开发框架:Vue 2、Taro、React(管理端 / 商城端等多端方案并存)
- 数据库:MySQL(建议 8.0,
utf8mb4);支持读写分离与阿里云 PolarDB 等兼容 MySQL 的托管实例 - 队列 / 异步:
ecshopx-dispatch提供同步与 Redis 驱动的跨模块事件分发;默认可靠队列能力基于 Redis;RabbitMQ 非主路径 - 缓存:默认 Redis;按业务划分多 Redis 逻辑库(default / companys / prism / datacube / deposit 等,见
application.properties) - CDN / OSS:对象存储驱动
ecshopx.storage.driver支持local/oss/qiniu/aws/cosv5 - 数据库迁移:Flyway 管理增量 SQL(目录
ecshopx-bootstrap/src/main/resources/db/migration;默认关闭启动时自动迁移,使用bin/make-migration生成与执行) - 定时任务:XXL-JOB(各模块
cron包 +@XxlJob;Admin 独立部署,Executor 随应用注册,默认端口19999) - 日志与可观测:应用日志输出至
logs/;Sentry 为可选接入(当前工程未内置 Sentry SDK,可按运维需要自行集成)
对外 API 路径前缀:
| 路径前缀 | 用途 |
|---|---|
/api/ | 业务 REST API |
/storage/ | 静态资源 / 本地上传文件 |
/wechatAuth/ | 微信授权回调 |
默认 HTTP 端口:18080。
数据处理能力
- 支持 MySQL 读写分离;可使用阿里云 PolarDB 等兼容 MySQL 的云数据库
- 多级缓存:Redis 应用缓存 + 网关 / CDN 层缓存(运维篇摘要);目标为常规 API 响应在 2 秒以内(视业务复杂度与下游依赖而定)
- 权限与数据隔离:按终端、店铺(商户)、门店等维度进行访问控制与数据范围限定,适配 B2C / B2B2C / O2O 等多模式
- 吞吐能力:生产容量应结合实例规格、JVM 调优、数据库与 Redis 规格及 HPA 策略实测评估,并按业务横向扩容
稳定性
- 运行时模型:以单 JVM 应用进程承载全部已装配 Bundle 的 HTTP 与同步业务逻辑;定时任务由 XXL-JOB Executor 执行,异步削峰由 ecshopx-dispatch(Redis 驱动)处理
- 异步与削峰:耗时或非关键路径通过
ecshopx-dispatch与业务事件机制异步处理,避免阻塞请求线程 - 定时与批处理:统一由 XXL-JOB Executor 执行各模块注册的定时任务;Admin 控制台独立部署,执行器与应用同生命周期管理
- 缓存与可用性:Redis 多级缓存降低数据库压力;关键外部依赖(MySQL、Redis)建议主从或托管高可用方案
- 集群与弹性(可选):生产环境可使用 Docker Compose 多副本或 Kubernetes + HPA 水平扩展应用实例;状态外置至 MySQL / Redis,应用无状态便于滚动发布
持续集成
- 源码二次开发:
ecshopx-java以 Apache 2.0 开源,除商业授权外均可基于源码定制;模块边界清晰,可按 Bundle 独立演进 - 本地 / 测试环境:仓库提供
docker-compose.yml,一键编排 MySQL、Redis、XXL-JOB Admin 与ecshopx-java应用(推荐默认开发路径) - 构建工具链:根目录
./mvnw统一编译与测试;数据库结构变更通过 Flyway +bin/make-migration工作流 - 版本管理:Git 管理源码与迁移脚本;提交前建议在目标模块执行
./mvnw -pl <module> -am verify - CI/CD(可选):Kubernetes、Helm、GitLab CI 等流水线可按团队基础设施自行接入,非仓库内置必选路径;首版文档以 Compose 与本地 Maven 工作流为准
