GCP 管理多个云功能流的最佳方式

问题描述

我正在学习 GCP 并阅读有关通信和管理云功能的不同方式的信息,我最终想知道何时使用提供 GCP 的每项服务。

所以,我一直在阅读有关 GCP ComposerGCP WorkflowsCloud Pub/Sub文章,但我不清楚何时使用每一个或使用简单的 HTTP 调用

我知道这在很大程度上取决于您正在构建的应用程序,但是例如,如果我正在构建一个支付网关,并且某些功能应该在支付验证后触发,例如发送电子邮件,进行不相关的业务逻辑,将购买添加到销售平台。那么哪个应该是我管理此流程的方式,在哪种情况下使用其他方式会更好?我应该使用事件通过 Pub/Sub 创建异步流,还是使用复杂的解决方案,如 Composer 和工作流?还是只是简单的 HTTP 调用

解决方法

一如既往,视情况而定!!即使在您的用例中,这也取决于!好的,付款后您要发送电子邮件,制作业务逻辑,将订单添加到您的数据库中,...

但是,这些动作是可以并行完成的,还是需要按照一定的顺序执行,如果一个步骤失败了,就停止这个过程?

在第一种情况下,您可以使用 Cloud PubSub 发布 1 条消息(付款正常),然后并行扇出多个函数。否则,您可以使用工作流来测试函数的响应,然后调用,或者不调用以下函数。使用 Composer,您可以执行更多检查和操作。

您还可以想象在 24 小时后发送另一封电子邮件感谢客户的订单,并使用 Cloud Task 延迟操作。

您谈到了 Cloud Functions,但您还有其他在 GCP 上托管代码的解决方案:App Engine 和 Cloud Run。大多数时候,云功能是单一目的。发送电子邮件非常适合某个功能。

现在,如果您有“功能集”来浏览库存、查看对象详细信息、查看价格和预订对象(验证订单“预订”仓库中的订单内容),则“功能”都是单一目的,但都与同一个领域相关:仓库管理。因此,您可以创建一个网络服务器,提出不同的路径来管理仓库(如果您愿意,可以为仓库提供微服务)并将其托管在 CloudRun 或 App Engine 上。

每种产品都有其优点和缺点。当您了解 GCP 上的存储时,您也会看到这一点。大多数情况下,您可以使用多种产品来实现目标,但如果您没有使用正确的产品,则速度会变慢,或者成本会更高。