如何在 Firebase 上进行事件驱动

Dmi*_*hov 4 firebase google-cloud-platform google-cloud-functions google-cloud-firestore

我们的初创公司是使用 Firebase 和 Google Cloud 的“云原生”。我们正在研究事件驱动设计,但我很难将该概念与 Firebase 或 GCP 上的特定服务相匹配。

示例:用户通过移动应用创建合同草稿(Firestore 文档)。我们需要触发以下操作:

  • 通过电子邮件和推送通知通知作为合同当事人的其他用户
  • 写入通知表,以便用户可以在应用程序中拥有一个“收件箱”并将其标记为已读或已删除
  • 生成一个作业,该作业将在一个月内轮询合约,如果不改变状态,则删除合约
  • 在服务器上运行一系列计算

到目前为止,我们设法将这些操作放入 Cloud Function 触发器中,但我们的触发器代码变得混乱,并且在极少数情况下,操作运行时间会超过 Cloud Function 阈值(2GB 和 9 分钟)。

我们计划改进代码库并减少基于触发器的操作:

  1. 用户正在创建合同 (Cloud Firestore)
  2. Cloud Firestore 触发器创建事件 (Cloud Functions)
  3. 需要执行某些操作的服务会订阅事件流并执行适当的操作。(这里有什么?)

我研究过 Pub/Sub,但认为这有点矫枉过正,因为我们不必处理太多 GCP 之外的服务,而且我们的规模也不需要它。我们可以在 Firebase 工具领域实现上述目标吗?

Dou*_*son 5

Pubsub 实际上正是您所需要的。这并不过分——它是 Google Cloud 中处理事件订阅的常见且首选的解决方案。事实上,Cloud Functions 已经构建在 pubsub 之上。

Firebase 工具实际上提供了自己的接口来部署 pubsub Cloud Functions。您可以在文档中阅读相关内容。但是,如果您需要比 Cloud Functions 提供的计算能力更多的计算能力,Firebase 产品将无法帮助您,您将需要考虑 Google Cloud 产品,例如 Compute Engine。您仍然可能会使用 pubsub 来通知您选择的后端。