2. 核心概念:Event、Source、Sink、Trigger、Channel、Broker 的定义与关系

在 Serverless Eventing 体系中,理解核心概念是进行版本差异校验的前提。本章将逐一拆解 Event(事件)、Source(事件源)、Sink(事件接收端)、Trigger(触发器)、Channel(通道) 与 Broker(代理) 的定义,并阐明它们之间的协作关系。

2.1 核心概念定义

概念 英文 定义 类比
事件 Event 描述“发生了什么”的数据记录,包含上下文(Context)与数据(Data)。遵循 CloudEvents 规范。 信封(上下文)+ 信件(数据)
事件源 Source 产生事件的实体。可以是服务、应用、设备或定时器。 发件人
事件接收端 Sink 消费或处理事件的最终目标。通常是函数、服务或外部系统。 收件人
触发器 Trigger 定义事件过滤规则(如事件类型、来源)并将匹配的事件转发给特定 Sink 的规则对象。 邮递员 + 筛选规则
通道 Channel 一种轻量级的事件缓冲与路由中间件,支持事件持久化、重试与多订阅者。 临时邮箱
代理 Broker 一个完整的事件网格节点,提供事件接收、过滤、路由、重试与死信队列等高级能力。 邮政总局
版本差异校验提示: 不同 Serverless 平台(如 Knative、OpenFunction、AWS Lambda)对 Broker 和 Channel 的实现细节存在差异,尤其在事件持久化策略和重试语义上。这是后续章节校验的重点。

2.2 概念关系:事件流转模型

下图展示了从事件产生到被消费的完整流转路径,以及各核心概念在其中的位置与关系。

Eventing 核心概念关系图 Source 事件源 Event 事件 Broker 代理 (事件网格节点) Channel 通道 Trigger 触发器 Sink 事件接收端 产生 发送 路由 匹配后转发 关键关系说明: 1. Source 产生 Event,Event 被发送到 Broker。 2. Broker 内部使用 Channel 缓冲和持久化事件。 3. Trigger 从 Broker 订阅事件,根据规则过滤后转发给 Sink。

2.3 概念对比:Channel vs Broker

Channel 和 Broker 是 Eventing 中容易混淆的两个概念。下表从多个维度进行对比,帮助理解它们在版本差异校验中的不同角色。

对比维度 Channel(通道) Broker(代理)
定位 轻量级事件中间件 完整的事件网格节点
事件持久化 可选,依赖实现(如 InMemoryChannel 无持久化) 默认支持持久化,通常基于 Kafka、RabbitMQ 等后端
过滤能力 无内置过滤,需配合 Subscription 实现 内置 Trigger 过滤机制,支持按类型、来源等属性过滤
重试机制 依赖 Subscription 配置 内置重试策略,支持指数退避和死信队列
版本差异校验点 不同实现(InMemory、Kafka、NATS)的语义差异 Broker 配置(如事件 TTL、重试次数)的版本兼容性

2.4 事件流转流程(步骤列表)

一个典型的事件从产生到被消费,经历以下步骤:

  1. 事件产生: Source 检测到状态变化或外部触发,构建符合 CloudEvents 规范的 Event 对象。
  2. 事件发送: Source 将 Event 发送到指定的 Broker 或 Channel。
  3. 事件缓冲: Broker 内部的 Channel 接收事件,进行持久化存储(如写入 Kafka 主题)。
  4. 事件过滤: Trigger 从 Broker 拉取事件,根据配置的过滤规则(如 type: "order.created")进行匹配。
  5. 事件转发: 匹配成功的事件被 Trigger 转发给绑定的 Sink(如一个 Knative Service 或函数)。
  6. 事件消费: Sink 处理事件数据,执行业务逻辑,并可能产生新的事件回写到 Eventing 系统。
版本差异校验关键点: 在步骤 3(事件缓冲)和步骤 4(事件过滤)中,不同版本的 Broker 实现可能在事件持久化策略、过滤语法和重试行为上存在差异。例如,Knative Eventing v0.25 之前使用 Subscription 进行过滤,而 v0.26 之后推荐使用 Trigger。这些差异直接影响容量规划与系统兼容性。

2.5 概念关系总结

下图以更简洁的方式总结了六个核心概念之间的依赖与协作关系,适合作为快速参考。

概念关系总结图 Source Event Broker 含 Channel Trigger Sink 核心关系:Source → Event → Broker(Channel) → Trigger → Sink Trigger 是 Broker 与 Sink 之间的桥梁,负责过滤和转发;Channel 是 Broker 内部的事件缓冲组件。