Google cloud platform 谷歌云存储&x2B;功能:大规模系统架构 背景

Google cloud platform 谷歌云存储&x2B;功能:大规模系统架构 背景,google-cloud-platform,google-cloud-functions,google-cloud-storage,google-cloud-pubsub,Google Cloud Platform,Google Cloud Functions,Google Cloud Storage,Google Cloud Pubsub,我有一个包含3个步骤的处理链。我将设计我的应用程序,使其具有非常高的输出 进入细节 系统正在解决传入的任务。每个处理链(A、B和C)都有输入和输出: 输入是要解决的任务输出是要解决的子任务列表A为单个输入生成多个输出(所有输出都与同一任务相关) B输入是一项需要解决的任务B输出是针对C的单个任务 C输入是由“父任务”聚合的消息列表。完成特定任务的所有项目后,C将该任务标记为已完成 图表: 一种可能的架构是,使用谷歌云,将谷歌云存储对象写入一个bucket中,用于每个新的传入任务。为创建的每个新

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

进入细节 系统正在解决传入的任务。每个处理链(
A
B
C
)都有输入和输出:

输入是要解决的任务<代码>输出是要解决的子任务列表<代码>A
为单个输入生成多个输出(所有输出都与同一任务相关)

B
输入是一项需要解决的任务<代码>B输出是针对
C
的单个任务

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

图表:

一种可能的架构是,使用谷歌云,将谷歌云存储对象写入一个bucket中,用于每个新的传入任务。为创建的每个新存储对象启用Google函数通知。此功能将与
A
(从处理链)的工作相关联。输出将写入不同的存储桶,该存储桶将触发另一个函数通知(
B
)。输出将写入第三个存储桶,用于处理
C

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

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

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


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

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


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

我建议您看看产品。在你的设计中

  • 保留函数A,但更新它以发送要运行的任务B的JSON列表
  • 然后,使用并行执行器并行运行B任务。我写
  • 当所有B任务完成时,工作流可以调用C函数