1. 事件驱动架构与Confluent平台导入

在传统请求—响应式系统里,一个业务动作往往由调用方主动发起,被调用方同步返回结果。订单服务调用库存服务扣减库存,库存服务再调用支付服务完成扣款,整条链路被“调用栈”串起来。只要下游某个服务变慢或不可用,上游就会被拖住,扩容也只能按最慢的环节来估算。事件驱动架构(Event-Driven Architecture,EDA)换了一种组织方式:业务动作被表达为“已经发生的事实”,也就是事件,由生产者发布到事件流平台,消费者按自己的节奏订阅和处理。调用方不再等待结果,而是把“发生了什么”交给平台去传播。

理解 EDA,先要区分三个容易混淆的概念。事件(Event)是对已发生事实的不可变记录,例如 OrderPlaced、PaymentCaptured,它描述过去,通常带唯一标识、时间戳和业务载荷。命令(Command)是希望对方做某事的请求,例如 ReserveInventory,它面向未来,可能被拒绝。消息(Message)是传输层的泛称,事件和命令都可以是消息。事件驱动系统强调以事件为中心:生产者只负责如实发布,不关心谁消费;消费者只关心自己订阅的事件类型,不反向依赖生产者。这种“发布—订阅”的解耦带来三个直接收益:时间解耦(消费者可离线后补)、空间解耦(双方互不知道地址)、实现解耦(各自独立选型与部署)。代价是最终一致性、重复投递和顺序问题需要被认真设计,而不是被隐藏。

事件流平台是承载这套机制的底座。它需要具备几项能力:持久化存储事件而不是消费后即删、支持多消费者各自读取同一份数据、按分区保证局部有序、可水平扩展吞吐、能长期保留以便重放。Apache Kafka 是这类平台的事实标准,而 Confluent 是在 Kafka 之上构建的企业级事件流平台。可以把二者关系理解为:Kafka 提供核心的分布式日志与复制协议,Confluent 补齐了让它在企业中可运维、可治理、可连接、可实时计算的部分。

事件驱动架构与 Confluent 平台分层定位 生产者 Producer 订单服务 支付服务 设备网关 发布事实,不等待 Confluent 事件流平台 Kafka 核心:Topic / Partition / 副本 / 偏移量 持久化日志 · 分区有序 · 可重放 Connect 连接器 数据库 / 对象存储 ksqlDB / Flink 流式处理与聚合 Schema Registry · 治理 · 安全 · 监控 契约管理 · 权限 · 可观测性 消费者 Consumer 风控服务 通知服务 实时看板 按自身节奏消费 事件示例 OrderPlaced PaymentCaptured InventoryReserved 不可变 · 带时间戳 · 可重放 课程学习路径 概念与平台定位 第 1–4 章 主题与生产消费 第 5–12 章 流处理与连接 第 13–20 章 治理与可靠性 第 21–26 章 综合实战 第 27–30 章

上图把平台分层与课程路径放在一起看:左侧是生产者,中间是 Confluent 平台,右侧是消费者,底部是 30 章的学习推进顺序。需要特别注意的是,Confluent 的价值并不只是“跑一个 Kafka 集群”。Kafka 核心负责 Topic、Partition、副本和偏移量这些底层机制;Connect 负责把数据库、对象存储等外部系统接入事件流;ksqlDB 与 Flink 负责在流上做过滤、聚合和连接;Schema Registry 与治理能力负责契约、权限和可观测性。这四块合起来,才构成企业里真正可用的事件流平台。

用一个具体例子来体会事件驱动与请求响应的差别。假设电商下单场景,请求响应式做法是订单服务依次调用库存、支付、通知三个接口,任一失败都要补偿。事件驱动做法是订单服务只向 orders 主题写入一条 OrderPlaced 事件,库存服务订阅后扣减并发布 InventoryReserved,支付服务订阅后扣款并发布 PaymentCaptured,通知服务订阅这些事件后发短信。订单服务不关心下游有几个、是否在线。如果通知服务临时宕机,事件仍在主题中保留,恢复后从上次偏移量继续消费即可,不会丢单。这就是“持久化 + 偏移量 + 可重放”带来的弹性。

当然,事件驱动不是免费的。同一事件可能被重复投递,消费者必须做幂等处理,例如用事件 ID 去重;跨分区不保证全局顺序,需要按业务键(如订单号)分区来保证同一订单的事件有序;事件结构一旦发布就很难随意修改,因此要用 Schema Registry 管理兼容性。这些正是后续章节要重点解决的问题。

学习建议:把“事件”当成系统里的一等公民来设计。先想清楚业务中哪些事实值得被记录和广播,再决定主题划分与分区键,最后才考虑消费者如何实现。顺序反了,后期改造成本会很高。

本课程的整体路径按“先建立认知、再动手实现、最后治理与实战”推进。第 1–4 章建立事件驱动概念与 Confluent 平台定位,理解 Kafka 核心模型;第 5–12 章进入主题设计、生产者与消费者的实际编码,掌握分区、偏移量提交、幂等与重试;第 13–20 章学习 Connect 与流处理,把外部系统和实时计算接入;第 21–26 章聚焦 Schema Registry、安全、监控与可靠性治理;第 27–30 章通过综合案例把前面能力串成完整系统。学完本课程,你应当能够独立设计一个主题结构合理、消费者可靠、契约可治理的事件驱动系统,并能在 Confluent 平台上把它跑起来、看清楚、维护好。