您可以使用 Eventarc 和 Datastore 模式的 Firestore 来构建事件驱动型架构。Datastore 模式 Firestore 为 Eventarc 提供触发器,这些触发器可根据数据库中特定实体的更改生成事件。触发器可以将事件路由到受支持的目标位置:
Eventarc 提供了一个用于管理解耦的微服务之间的状态更改(称为“事件”)流的标准化解决方案。触发后,Eventarc 会将这些事件路由到各个目的地,同时为您管理传送、安全、授权、可观测性和错误处理。
应用场景示例
事件驱动型架构是一种系统设计模式,其中服务会对状态变化(称为事件)作出反应。您可以将此模式与 Firestore 的可伸缩性结合使用,为应用添加更多功能。例如,您可以添加以下功能:
不同技术栈之间的互操作性
复制数据并在将其发送到分析系统之前对其进行转换。
并行处理
用于并行处理的分支操作。如果您有多个基于实体更改运行的系统,则可以在每个使用方中使用基于推送的流,并将事件路由到多个使用方。
基于推送的事件流
构建基于推送的消息传递设计。客户端无需轮询远程服务即可接收通知。由于没有轮询延迟,您可以更好地执行即时数据处理和实时分析。
状态监控和提醒
使用事件驱动型架构向数据库操作添加自定义指标。监控并接收有关更改和更新的提醒。检测异常情况。
限制
对于 Eventarc 的 Datastore 模式触发器,请注意以下限制:
- 无法保证顺序。快速更改可能会以无法预料的顺序触发事件。
事件至少会被传送一次。
确保您的事件处理脚本具有幂等性,避免在事件多次传送时产生意外结果或副作用。如需了解详情,请参阅构建幂等函数。
一个触发器与单一数据库相关联。您无法创建与多个数据库匹配的触发器。
删除数据库不会自动删除该数据库的任何触发器。触发器会停止传送事件,但会继续存在,直到您删除触发器。
Eventarc 和 Datastore 模式 Firestore 位置
Eventarc 不支持 Firestore 事件触发器的多区域位置,但您仍然可以为多区域位置中的 Firestore 数据库创建触发器。Eventarc 将 Firestore 多区域位置映射到以下 Eventarc 区域:
Firestore 多区域 | Eventarc 区域 |
---|---|
nam5 |
us-central1 |
eur3 |
europe-west4 |
Datastore 模式和原生模式事件互操作性
Eventarc 支持 Datastore 模式和原生模式的事件触发器。这些事件触发器可与这两种数据库类型互操作。原生模式 Firestore 数据库可以接收 Datastore 事件,而 Datastore 模式 Firestore 数据库可以接收原生模式事件。
借助事件互操作性,您可以在不同类型的 Firestore 数据库之间共享 Eventarc 代码。
活动转化
如果您将原生模式事件触发器应用于 Datastore 模式数据库,Eventarc 会进行以下转换:
- 实体的命名空间存储在事件的
PartitionId
属性中。 - 嵌入式实体会转换为原生模式
map
类型。
后续步骤
- 了解事件驱动型架构。