2. 技术栈选型:后端框架、事件存储、前端框架与数据库
在构建供应链控制塔事件溯源系统时,技术栈的选型直接决定了系统的可扩展性、数据一致性以及团队协作效率。本章围绕四个核心维度——后端框架、事件存储、前端框架和数据库——进行选型分析,并给出推荐方案。
2.1 后端框架:Spring Boot
Spring Boot 是 Java 生态中用于构建微服务和事件驱动应用的主流框架。其自动配置、嵌入式容器和丰富的 Spring 生态(Spring Data、Spring Cloud Stream、Spring Security)能够大幅降低事件溯源项目的开发复杂度。
| 特性 | Spring Boot 优势 | 适用场景 |
|---|---|---|
| 自动配置 | 减少样板代码,快速集成 EventStoreDB 客户端 | 快速原型与生产部署 |
| 事件驱动支持 | 通过 Spring Cloud Stream 绑定 Kafka 或 EventStoreDB | 事件溯源 + CQRS 架构 |
| 事务管理 | 声明式事务 + 事件总线保证最终一致性 | 订单、库存等核心链路 |
| 监控与运维 | Actuator + Micrometer 集成 Prometheus | 生产环境可观测性 |
选型建议:如果团队以 Java 为主,且需要与现有 Spring 微服务体系无缝对接,Spring Boot 是首选。若团队技术栈偏向 Go 或 Node.js,可考虑替代方案(如 Go-Kit 或 NestJS),但本课程以 Spring Boot 为主线。
2.2 事件存储:EventStoreDB 与 Kafka 的协同
事件溯源的核心是事件存储。EventStoreDB 专为事件溯源设计,提供追加日志、投影和订阅功能;Kafka 则擅长高吞吐事件流与跨服务分发。在控制塔场景中,两者通常组合使用:EventStoreDB 作为权威事件源,Kafka 作为事件总线。
核心对比:
- EventStoreDB:原生支持事件溯源模式,提供按聚合 ID 的精确读取、投影查询和期望版本检查,适合需要强一致性的核心域(如订单、库存)。
- Kafka:高吞吐、持久化、多消费者组,适合事件广播、数据管道和跨系统集成,但缺乏内置的聚合版本控制。
2.3 前端框架:Vue3 与 React 的选型权衡
控制塔前端需要实时展示事件流、供应链看板和告警面板。Vue3 和 React 都是成熟方案,但侧重点不同。
| 维度 | Vue3 | React |
|---|---|---|
| 学习曲线 | 较低,模板语法直观 | 中等,JSX 与函数式思维 |
| 状态管理 | Pinia(轻量、TypeScript 友好) | Redux Toolkit / Zustand |
| 实时数据 | VueUse + WebSocket 集成 | React Query + SSE |
| 生态成熟度 | 国内社区活跃,组件库丰富 | 全球生态最大,第三方库最多 |
| 推荐场景 | 中小团队、快速迭代、中后台 | 大型项目、复杂交互、跨平台 |
注意:本课程以 Vue3 + TypeScript + Pinia 作为前端主线,因为其模板语法更贴近供应链看板的声明式渲染需求,且与 Spring Boot 后端配合时,前后端类型可通过 OpenAPI 生成器自动对齐。
2.4 数据库:PostgreSQL 的读模型与快照存储
在事件溯源架构中,PostgreSQL 不直接存储事件流(事件由 EventStoreDB 管理),而是承担以下职责:
- 读模型(Read Model):存储由事件投影生成的物化视图,如订单汇总、库存快照、供应商评分。
- 聚合快照(Snapshot):定期保存聚合状态,减少事件重放开销。
- 元数据管理:存储事件订阅偏移量、投影配置、用户权限等。
2.5 技术栈总览
下表汇总了本课程推荐的技术栈及其版本基线(以课程编写时的稳定版为准):
| 组件 | 技术选型 | 版本基线 | 主要用途 |
|---|---|---|---|
| 后端框架 | Spring Boot | 3.2.x | 事件处理、命令总线、REST API |
| 事件存储 | EventStoreDB | 23.10.x | 权威事件源、聚合版本控制 |
| 事件总线 | Kafka | 3.6.x | 跨服务事件分发、数据管道 |
| 前端框架 | Vue3 | 3.4.x | 控制台看板、事件流可视化 |
| 状态管理 | Pinia | 2.1.x | 前端状态与缓存 |
| 数据库 | PostgreSQL | 16.x | 读模型、快照、元数据 |
| 容器化 | Docker + Docker Compose | 24.x + 2.24.x | 本地开发与测试环境 |
选型总结:Spring Boot + EventStoreDB + Kafka + Vue3 + PostgreSQL 构成了一个端到端的事件溯源技术栈。EventStoreDB 保证事件写入的强一致性,Kafka 负责事件的高吞吐分发,PostgreSQL 承载读模型与快照,Vue3 提供实时交互界面。后续章节将基于此技术栈逐步搭建部署环境。