我们的启动是"云原生";使用Firebase和Google Cloud。我们正在研究事件驱动的设计,但我很难将概念与Firebase或GCP上的特定服务相匹配。
例如:用户通过移动应用程序创建合同草案(Firestore文档(。我们需要触发以下操作:
- 通过电子邮件和推送通知
- 写入通知表,以便用户可以有一个";收件箱";在应用程序并将其标记为已读或已删除
- 生成一个将在一个月内轮询合同的作业,如果是不更改状态,删除合同
- 在服务器上运行一系列计算
到目前为止,我们成功地将这些操作放入了云功能触发器中,但我们的触发器代码变得混乱,在极少数情况下,操作运行超过了云功能阈值(2GB和9分钟(。
我们计划改进代码库并减少基于触发的操作:
- 用户正在创建合同(Cloud Firestore(
- Cloud Firestore触发器创建一个事件(Cloud函数(
- 需要对此采取措施的服务订阅事件流并执行适当的操作。(这里是什么?(
我调查过Pub/Sub,但认为这太过分了,因为我们不必过多地处理GCP之外的服务,而且我们的规模不需要atm。我们能在Firebase工具的范围内实现上述目标吗?
Pubsub实际上正是您所需要的。这并不过分——这是谷歌云中处理事件订阅的常见且首选的解决方案。事实上,Cloud Functions已经建立在pubsub之上。
Firebase工具实际上为部署pubsubCloud函数提供了自己的接口。您可以在文档中阅读相关内容。然而,如果你需要比云功能提供的计算能力更多的计算能力,Firebase产品对你没有帮助,你需要研究像计算引擎这样的谷歌云产品。您仍然可能使用pubsub来通知您选择的后端。
由于目前规模对您来说不是问题,因此您可以使用Firebase工具实现这些功能。
如果你还没有阅读Cloud Firestore触发器文档,那么它将是一本很好的读物,可以了解如何在发生不同事件时进行改进并使其更经得起未来考验。
此外,如果您想创建带有服务的订阅,以查找要执行的某些操作,那么值得查看此文档并查看Observables
。