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 + 可靠消息”混合方案解决。

核心业务链路:

  1. 用户提交订单 → 订单服务创建订单(状态:待支付)
  2. 订单服务调用库存服务 Try 接口(预扣库存)
  3. 订单服务调用支付服务 Try 接口(预冻结金额)
  4. 订单服务调用积分服务 Try 接口(预占积分)
  5. 所有 Try 成功后,订单服务提交 Confirm → 各服务正式扣减
  6. 任一 Try 失败,订单服务发起 Cancel → 各服务回滚
  7. 支付成功后,通过可靠消息异步触发物流发货与积分发放
电商订单履约分布式事务链路(TCC + 可靠消息) 订单服务 库存服务 支付服务 积分服务 物流服务 消息队列 TCC 阶段:订单服务协调库存/支付/积分 Try → Confirm/Cancel 可靠消息阶段:支付成功事件 → 消息队列 → 物流服务异步发货 补偿策略:Try 超时或失败 → 自动 Cancel 所有已 Try 资源

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