1. 课程导学:分布式事务与事件风暴画布概述、课程目标与学习路径、项目背景与业务场景介绍
1.1 分布式事务:从理论到落地的核心挑战
在微服务架构与云原生环境下,单体数据库的本地事务(ACID)已无法满足跨服务、跨数据源的业务一致性需求。分布式事务的核心目标是保证多个独立节点上的数据操作满足“最终一致性”或“强一致性”,但其实现复杂度远高于单机事务。
核心矛盾: CAP 定理与 BASE 理论的权衡。在分布式系统中,网络分区(P)是必然发生的,因此必须在一致性(C)与可用性(A)之间做出取舍。传统 2PC/3PC 追求强一致性但牺牲了可用性与吞吐量;TCC、Saga、可靠消息等方案则通过补偿与异步机制实现最终一致性。
本课程聚焦于 事件驱动架构(EDA) 下的分布式事务解决方案,以 事件风暴(Event Storming) 为建模工具,将复杂的业务一致性需求转化为可落地的技术实现。
| 方案 | 一致性模型 | 典型场景 | 核心风险 |
|---|---|---|---|
| 2PC(两阶段提交) | 强一致性 | 跨库转账、库存扣减 | 协调者单点、阻塞、性能低 |
| TCC(Try-Confirm-Cancel) | 最终一致性 | 账户资金操作、订单拆分 | 业务侵入性强、空回滚与悬挂 |
| Saga(编排/协同) | 最终一致性 | 长流程订单、旅行预订 | 补偿逻辑复杂、缺少隔离性 |
| 可靠消息(本地消息表/事务消息) | 最终一致性 | 异步通知、积分发放 | 消息重复、幂等设计 |
1.2 事件风暴画布:业务与技术之间的桥梁
事件风暴是由 Alberto Brandolini 提出的一种协作建模方法,通过“领域事件”驱动,让业务专家与开发团队在短时间内完成对复杂业务域的建模。本课程将事件风暴与分布式事务设计深度结合,形成一张 “分布式事务事件风暴画布”,用于可视化地识别事务边界、定义补偿动作、设计消息流。
画布核心元素: 领域事件(橙色)、命令(蓝色)、聚合(黄色)、外部系统(粉色)、策略(紫色)、用户(绿色)。每个元素在画布上的位置与连接关系,直接映射到分布式事务的参与者、触发条件与补偿路径。
1.3 课程目标与学习路径
本课程面向具备微服务与分布式系统基础的架构师、高级开发工程师与 DevOps 工程师,旨在通过一个完整的实战项目,帮助学员掌握从业务建模到生产部署的全链路能力。
- 核心目标一: 掌握事件风暴建模方法,能够独立使用画布对复杂业务域进行分布式事务建模。
- 核心目标二: 理解 TCC、Saga、可靠消息等分布式事务方案的原理与适用场景,并能在项目中正确选型。
- 核心目标三: 掌握基于 Kubernetes 的灰度发布策略(蓝绿部署、金丝雀发布、流量镜像),并能够结合分布式事务进行安全发布。
- 核心目标四: 完成一个包含订单、库存、支付、积分等核心链路的分布式事务项目,并部署到生产级环境。
| 阶段 | 章节范围 | 核心产出 |
|---|---|---|
| 基础与建模 | 第 1-6 章 | 事件风暴画布、事务方案选型矩阵 |
| 项目开发 | 第 7-16 章 | 可运行的分布式事务 Demo 项目 |
| 部署与灰度 | 第 17-24 章 | K8s 部署清单、灰度发布流水线 |
| 压测与运维 | 第 25-30 章 | 性能报告、监控告警、故障演练 |
1.4 项目背景与业务场景
本课程选取 “电商订单履约” 作为实战业务场景。该场景天然包含多个微服务(订单、库存、支付、积分、物流)之间的分布式事务需求,且具备典型的补偿与重试特征。
业务痛点: 用户下单时,需要同时扣减库存、冻结支付额度、预占积分。任何一个环节失败,都需要回滚已成功的操作。传统 2PC 方案在库存热点场景下会导致大量锁等待与超时,而 Saga 方案又面临补偿逻辑复杂、缺少隔离性的问题。本课程将使用事件风暴画布重新设计该流程,并采用“TCC + 可靠消息”混合方案解决。
核心业务链路:
- 用户提交订单 → 订单服务创建订单(状态:待支付)
- 订单服务调用库存服务 Try 接口(预扣库存)
- 订单服务调用支付服务 Try 接口(预冻结金额)
- 订单服务调用积分服务 Try 接口(预占积分)
- 所有 Try 成功后,订单服务提交 Confirm → 各服务正式扣减
- 任一 Try 失败,订单服务发起 Cancel → 各服务回滚
- 支付成功后,通过可靠消息异步触发物流发货与积分发放
1.5 课程特色与前置知识
课程特色: 本课程不是纯理论讲解,而是“建模 → 编码 → 部署 → 灰度 → 压测”的全流程实战。每章都配有可运行的代码示例与部署脚本,学员可以在本地或云环境完整复现。
前置知识要求:
- 熟悉 Java/Spring Boot 微服务开发,了解 Spring Cloud 或 Dubbo 基本概念。
- 了解 Docker 与 Kubernetes 基本操作(Pod、Service、Deployment)。
- 了解分布式系统 CAP、BASE 理论,有基本的消息队列使用经验(如 RabbitMQ、Kafka)。
- 无需事件风暴经验,课程会从零开始讲解建模方法。
技术栈概览:
| 组件 | 用途 | 版本 |
|---|---|---|
| Spring Boot / Spring Cloud | 微服务框架 | 2.7.x / 2021.0.x |
| Apache Seata | 分布式事务框架(AT/TCC 模式) | 1.7.x |
| RabbitMQ | 可靠消息与事件驱动 | 3.12.x |
| Kubernetes | 容器编排与灰度发布 | 1.28.x |
| Istio | 服务网格与流量管理 | 1.20.x |
| Argo Rollouts | 渐进式交付与灰度发布 | 1.6.x |