我们的初创公司是使用 Firebase 和 Google Cloud 的“云原生”。我们正在研究事件驱动设计,但我很难将这个概念与 Firebase 或 GCP 上的特定服务相匹配。
示例:用户通过移动应用创建契约(Contract)草稿(Firestore 文档)。我们需要触发以下操作:
- 通过电子邮件通知作为契约(Contract)当事方的其他用户,以及 推送通知
- 写入通知表,以便用户可以在 应用并将其标记为已读或已删除
- 生成一个将在一个月内轮询契约(Contract)的工作,如果它这样做 不改变状态,删除契约(Contract)
- 在服务器上运行一系列计算
到目前为止,我们设法将这些操作放入 Cloud Function 触发器中,但我们的触发器代码变得困惑,并且在极少数情况下,操作会超过 Cloud Function 阈值(2GB 和 9 分钟)。
我们计划改进代码库并减少基于触发器的操作:
- 用户正在创建契约(Contract) (Cloud Firestore)
- Cloud Firestore 触发器创建一个事件(Cloud Functions)
- 需要对其进行处理的服务订阅事件流并执行适当的操作。 (这里有什么?)
我调查了 Pub/Sub,但认为这有点矫枉过正,因为我们不必过多地处理 GCP 之外的服务,而且我们的规模不需要它 atm。我们能否在 Firebase 工具领域内实现上述目标?
最佳答案
Pubsub 实际上正是您所需要的。这并不过分 - 它是 Google Cloud 中处理事件订阅的常见且首选的解决方案。事实上,Cloud Functions 已经构建在 pubsub 之上。
Firebase 工具实际上提供了自己的界面来部署 pubsub 云函数。您可以在 documentation 中阅读相关内容.但是,如果您需要比 Cloud Functions 提供的计算能力更强的计算能力,Firebase 产品将无济于事,您需要研究 Google Cloud 产品,例如 Compute Engine。您仍然可能会使用 pubsub 来通知您选择的后端。
关于firebase - 如何在 Firebase 上进行事件驱动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64134409/