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