1. 课程导论:分布式事务的挑战与事件风暴的价值
1.1 分布式事务:微服务架构下的“阿喀琉斯之踵”
在单体应用向微服务架构迁移的过程中,数据一致性从“本地事务”的强一致保障,演变为跨服务、跨数据库的分布式一致性问题。传统的 ACID 事务在分布式环境下面临严峻挑战:
| 维度 | 单体架构(本地事务) | 微服务架构(分布式事务) |
|---|---|---|
| 数据源 | 单一数据库 | 多个数据库 / 消息队列 / 缓存 |
| 一致性模型 | 强一致性(ACID) | 最终一致性(BASE) |
| 事务协调 | 数据库本地锁 + 二阶段提交 | Saga / TCC / 事件驱动 |
| 故障影响 | 单点回滚 | 级联补偿 / 幂等重试 |
| 业务复杂度 | 低(ORM 管理) | 高(需设计补偿与对账) |
常见误区:许多团队试图用“分布式事务框架”(如 Seata AT 模式)直接解决所有一致性问题,却忽略了业务边界划分不合理导致的“长事务”与“锁冲突”。技术方案无法弥补领域建模的缺陷。
1.2 事件风暴:从业务混沌到领域模型的“手术刀”
事件风暴(Event Storming)是由 Alberto Brandolini 提出的一种协作建模方法,通过“领域事件”作为核心线索,将分散在业务专家、产品经理、开发人员脑中的知识,快速转化为可视化的领域模型。其核心价值在于:
- 打破沟通壁垒:使用统一的“事件语言”,让非技术人员也能参与建模。
- 快速发现聚合边界:通过“命令→事件→读模型”的流程,自然识别出高内聚的聚合根。
- 暴露分布式事务痛点:在画布上标记“跨聚合的事件流”,提前识别需要最终一致性的边界。
课程实践:本课程将使用“事件风暴画布”作为核心工具,在建模阶段就标注出“需要分布式事务”或“可接受最终一致性”的决策点,避免后期架构返工。
1.3 课程目标:从画布到代码的完整落地路径
本课程不是单纯的理论讲解,而是提供一套“可执行”的架构落地方法。你将学会:
- 用事件风暴画布建模:在画布上标注领域事件、命令、聚合、限界上下文,并标记“分布式事务热点”。
- 选择合适的事务模式:根据业务场景(强一致 vs 最终一致)选择 Saga、TCC、事件驱动或本地消息表。
- 生成可落地的架构设计:将画布模型映射为微服务接口、事件 Schema、补偿逻辑与幂等方案。
- 代码级实现:使用 Spring Boot + Axon Framework / Seata 等框架,实现事件溯源与分布式事务。
核心交付物:每章结束后,你将获得一个“事件风暴画布片段 + 对应的架构决策记录(ADR)+ 可运行的代码示例”。
1.4 学习路径图
课程共 30 章,分为 5 个阶段,建议按顺序学习:
| 阶段 | 章节范围 | 核心产出 |
|---|---|---|
| 基础篇 | 第 1-6 章 | 事件风暴画布 + 分布式事务模式对比表 |
| 建模篇 | 第 7-14 章 | 完整领域模型(含聚合、事件、命令) |
| 架构篇 | 第 15-22 章 | 微服务拆分方案 + 事务编排设计 |
| 实现篇 | 第 23-28 章 | 可运行代码(Saga / TCC / 事件溯源) |
| 总结篇 | 第 29-30 章 | 架构决策记录 + 实战复盘 |
1.5 前置知识与工具准备
为获得最佳学习效果,建议你具备以下基础:
- DDD 基础:了解实体、值对象、聚合、领域事件等基本概念。
- 微服务经验:有 Spring Boot 或类似框架的使用经验。
- 工具:Miro 或 Draw.io(用于事件风暴画布)、IntelliJ IDEA、Docker(用于本地运行示例)。
快速开始:如果你对 DDD 完全陌生,建议先阅读《领域驱动设计精粹》(Vaughn Vernon)前 3 章,或观看本课程附带的“DDD 速览”视频(第 0 章)。