2. 核心概念:Event、Source、Sink、Broker、Trigger、Channel 的定义与关系
在 Serverless Eventing 体系中,事件驱动架构围绕六个核心概念构建。理解它们的定义与协作关系,是掌握生命周期发布包校验的前提。以下逐一拆解每个概念,并通过表格与架构图展示其完整链路。
2.1 核心概念定义
| 概念 | 英文 | 定义 | 类比(快递系统) |
|---|---|---|---|
| 事件 | Event | 描述状态变化或已发生事实的不可变数据记录,包含元数据(类型、来源、时间)与载荷(Payload)。 | 快递包裹本身(内含物品与运单信息)。 |
| 事件源 | Source | 产生事件的实体,可以是微服务、SaaS 应用、IoT 设备或定时器。每个事件必须标明其来源。 | 寄件人(发起包裹)。 |
| 事件接收器 | Sink | 消费事件的最终目的地,通常是一个函数、服务或外部系统。Sink 接收事件后执行业务逻辑。 | 收件人(签收包裹)。 |
| 代理 | Broker | 事件网格中的中央路由组件,负责接收来自 Source 的事件,并根据 Trigger 规则将事件分发到对应的 Sink。 | 快递(按地址分拣包裹)。 |
| 触发器 | Trigger | 定义事件过滤与路由规则的策略对象。它描述“当某类事件到达 Broker 时,转发到哪个 Sink”。 | 快递面单上的地址标签(决定包裹去向)。 |
| 通道 | Channel | 底层事件缓冲与传输的抽象层,负责事件的持久化、排序与投递保证。Broker 内部依赖 Channel 实现。 | 快递运输线路(公路/航空/铁路)。 |
校验视角提示: 在发布包校验场景中,Event 的格式合规性(CloudEvents 标准)、Source 的身份可信度、Trigger 规则的正确性,是校验的三个关键检查点。
2.2 概念关系:事件驱动链路
六个概念并非孤立存在,它们构成一条完整的事件生命周期链路:
- Source 产生 Event,并将事件发送到 Broker。
- Broker 接收事件后,将其存入内部的 Channel 进行缓冲与持久化。
- Trigger 持续监听 Broker 中的事件流,根据过滤条件(事件类型、来源等)匹配事件。
- 匹配成功后,Broker 将事件从 Channel 取出,路由到对应的 Sink。
- Sink 消费事件,执行业务逻辑,完成一次事件驱动调用。
核心关系公式:
Source → Event → Broker (Channel) → Trigger (Filter) → Sink
2.3 概念关系架构图
下图展示了六个核心概念在 Serverless Eventing 中的完整协作关系与数据流向:
2.4 概念对比:Broker vs Channel vs Trigger
这三个组件容易混淆,下表从职责、生命周期与校验维度进行对比:
| 对比维度 | Broker | Channel | Trigger |
|---|---|---|---|
| 职责 | 事件路由与分发中心 | 事件缓冲、持久化与传输 | 事件过滤与路由规则定义 |
| 生命周期 | 长期运行,与命名空间绑定 | 由 Broker 管理,自动创建/销毁 | 用户创建,可动态增删改 |
| 校验重点 | 可用性、吞吐量、配置正确性 | 数据完整性、投递保证(至少一次/精确一次) | 过滤表达式语法、目标 Sink 可达性 |
| 是否对外暴露 | 是,Source 直接发送事件到 Broker | 否,Broker 内部组件 | 是,用户通过 API 管理 |
2.5 事件流示例:发布包校验场景
以“发布包上传后触发校验”为例,展示六个概念如何协作:
- Source:CI/CD 流水线(如 Jenkins)检测到新发布包上传到对象存储。
- Event:生成 CloudEvents 格式事件,包含
type: "package.uploaded"、source: "jenkins/prod"、data: { packageId: "pkg-123", version: "1.2.3" }。 - Broker:接收事件,存入内部 Channel 进行持久化。
- Trigger:匹配
type == "package.uploaded"且source == "jenkins/prod"的事件。 - Sink:调用校验函数,执行签名验证、元数据检查、依赖扫描等校验逻辑。
常见误区: 不要将 Trigger 视为事件消费者。Trigger 只是路由规则,真正的消费者是 Sink。Trigger 不执行任何业务逻辑,仅负责“匹配与转发”。
2.6 概念关系总结图
下图从更高维度展示六个概念在事件生命周期中的位置与依赖关系:
2.7 关键要点
- Event 是核心载体:所有组件围绕 Event 的流转而设计,Event 的格式(推荐 CloudEvents)决定了系统的互操作性。
- Broker 是中枢:它解耦了 Source 与 Sink,使得双方可以独立扩展与演进。
- Channel 保证可靠性:通过持久化与重试机制,确保事件不会因 Broker 重启或网络抖动而丢失。
- Trigger 提供灵活性:支持基于事件类型、来源、自定义属性的精确过滤,避免 Sink 收到无关事件。
- 校验贯穿始终:在发布包校验场景中,每个概念节点都可能成为校验的切入点,后续章节将逐一展开。