微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Google Cloud Storage + Function:大规模系统架构

如何解决Google Cloud Storage + Function:大规模系统架构

背景

我有一个包含 3 个步骤的处理链。我打算将我的应用程序设计为具有非常高的输出

进入细节

系统正在解决传入的任务。每个处理链(ABC)都有输入和输出

A 输入是要解决的任务。 A 输出是要解决的子任务列表。 A 为单个输入生成多个输出(均与同一任务相关)。

B 输入是要解决的任务。 B 输出是针对 C 的单个任务。

C 输入是消息列表,由“父任务”聚合。完成特定任务的所有项目后,C 将该任务标记为已完成。

示意图:

enter image description here

使用 Google Cloud 的一种可能架构是为每个新传入任务将 Google Cloud Storage 对象写入存储桶。为每个创建的新存储对象开启 Google Function 通知。该函数将执行A(来自处理链)的工作。输出将写入不同的存储桶,该存储桶将触发另一个函数通知 (B)。输出将写入第三个存储桶以处理 C

注意:当一个函数处理一个任务时,它也会在最后删除它。

假设在函数 B 上创建了 10 个要处理的特定任务。因此,在存储桶 C 中,您会在最后找到 10 个不同的对象。函数 C 的任务是检测特定任务的所有项目(A 输出)完全执行的确切时间。如果所有项目都执行了,C 必须将任务标记为已完成。

问题

听起来我们必须计算 A 有多少输出,并将其与 C 有多少输入进行比较。

这是否可以改变系统设计以防止“计数消息”的需要?

解决方法

我建议您看看 Cloud Workflows 产品。在您的设计中,

,

我不确定我是否了解所有上下文、要求和范围限制/复杂性,但我建议先阅读几个 StackOverflow 问题和一篇 Medium 文章。

How to combine multiple files in GCS bucket with Cloud Function trigger

How to concatenate sharded files on Google Cloud Storage automatically using Cloud Functions

Google Cloud Platform solution for serverless log ingestion (files downloading) from a SFTP server

我认为这些问题(和讨论)不会为您的问题提供完整的答案,但应该会揭示一些关于如何在云函数的幂等世界中支持“状态机”的想法。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。