使用 Eventarc 创建事件驱动型架构
您可以使用 Eventarc 和 Firestore 构建事件驱动型架构。适用于 Eventarc 的 Firestore 触发器会根据数据库中特定文档的更改生成事件。该触发器可以将事件路由到受支持的目的地:
- 支持 Cloud 客户端库和 Firebase SDK 的 Cloud Run 函数(第 2 代)
- Cloud Run
- Google Kubernetes Engine
- Workflows
Eventarc 提供了一个用于管理解耦的微服务之间的状态更改(称为“事件”)流的标准化解决方案。触发后,Eventarc 会将这些事件路由到各个目的地,同时为您管理传送、安全、授权、可观测性和错误处理。
限制
请注意适用于 Eventarc 的 Firestore 触发器的以下限制:
- 无法保证顺序。快速更改可能会以意想不到的顺序触发事件。
事件至少会被传送一次。
确保事件处理脚本具有幂等性,并避免在事件传递多次时产生意外结果或副作用。如需了解详情,请参阅构建幂等函数。
一个触发器与单一数据库相关联。您无法创建与多个数据库匹配的触发器。
删除数据库不会自动删除该数据库的任何触发器。触发器会停止传送事件,但会继续存在,直到您删除触发器。如果重新创建数据库,则还需要删除并重新创建所有关联的触发器,以恢复事件传送。
Eventarc 和 Firestore 位置
Eventarc 不支持 Firestore 事件触发器的多区域,但您仍然可以在多区域位置为 Firestore 数据库创建触发器。Eventarc 会将 Firestore 多区域位置映射到以下 Eventarc 区域:
Firestore 多区域 | Eventarc 区域 |
---|---|
nam5 |
us-central1 |
eur3 |
europe-west4 |
Cloud Run functions(第 2 代)与第 1 代之间的差异
Cloud Run functions(第 2 代)针对所有运行时使用 Eventarc 事件。以前,Cloud Run 函数(第 1 代)仅针对部分运行时使用 Eventarc 事件。Eventarc 事件与 Cloud Run functions(第 1 代)之间存在以下差异。
适用于 Eventarc 的 Firestore 触发器除了 Cloud Run 函数之外,还支持其他目的地。您可以将
CloudEvents
路由到多个目的地,包括但不限于 Cloud Run、GKE 和 Workflows。适用于 Eventarc 的 Firestore 触发器会在数据库写入操作开始时检索触发器定义,并使用该定义来确定 Firestore 是否应发出事件。写入操作不会考虑在运行时可能发生的触发器定义更改。
Cloud Run functions(第 1 代)会在评估数据库写入期间检索触发器定义,并且在评估期间对触发器所做的更改可能会影响 Firestore 是否发出事件。
Datastore 模式和原生模式事件互操作性
Eventarc 同时支持 Datastore 模式和原生模式的事件触发器。这些事件触发器可与这两种数据库类型互操作。原生模式 Firestore 数据库可以接收 Datastore 事件,而 Datastore 模式 Firestore 数据库可以接收原生模式事件。
借助事件互操作性,您可以在不同类型的 Firestore 数据库之间共享 Eventarc 代码。
事件转化
如果您将原生模式事件触发器应用于 Datastore 模式数据库,Eventarc 会进行以下转换:
- 实体的命名空间存储在事件的
PartitionId
属性中。 - 嵌入式实体会转换为原生模式
map
类型。
后续步骤
- 了解事件驱动型架构。