谷歌云存储+功能:规模化的系统架构规模化、架构、功能、系统

由网友(萋萋暮雪)分享简介:背景我有一个包含3个步骤的处理链。我要将我的应用程序设计为具有非常高的输出。了解详细信息系统正在解决传入任务。每个处理链(A、B和C)都有输入和输出:A输入是一个需要解决的任务。A输出是要解算的子任务列表。A为一个输入生成多个输出(所有输出都与同一任务相关)。B输入是一项需要解决的任务。B输出是针对C的单个任...

背景

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

了解详细信息

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

我为啥不看好ServiceMesh

A输入是一个需要解决的任务。A输出是要解算的子任务列表。A为一个输入生成多个输出(所有输出都与同一任务相关)。

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

C输入是按";父任务";聚合的消息列表。完成解决特定任务的所有项目后,C将该任务标记为已完成。

图:

使用Google Cloud的一种可能的体系结构是将Google Cloud Storage对象写入每个新传入任务的存储桶中。为创建的每个新存储对象打开Google功能通知。此函数将执行A的工作(从处理链)。输出将被写入将触发另一个函数通知(B)的不同存储桶中。输出将写入到第三个存储桶中,以便处理C

注意:当函数处理任务时,也会在结束时将其删除。

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

问题

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

是否可以更改系统设计以防止需要计算消息?

推荐答案

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

保留函数A,但更新它以发送要运行的B任务的JSON列表。 然后,iterate over the A JSON array response并使用并行执行器并行运行B任务。我写了an article on this 当所有B任务完成后,工作流可以调用C函数。
阅读全文

相关推荐

最新文章