【问题标题】:Separating webserver and processing server分离网络服务器和处理服务器
【发布时间】:2020-03-06 12:47:55
【问题描述】:

我想要一个架构设计建议。

我有一个由公共 Node.JS API 服务器组成的项目(处理客户端 HTTP 浏览器请求)

我的项目的目的是将图像转换为视频(我使用 ffmpeg 作为 CLI 执行此操作,可能需要一些时间)

业务流程应如下所示:

1) 用户将图像 URL 和他的电子邮件(作为 POST 参数)发送到 API

2) API 应响应“OK 200”并稍后发送包含图像视频的电子邮件

这是我的想法(以及我当前程序的作用):

1)nodeJS API直接向客户端响应“OK 200”

2) nodeJS 服务器使用 npm axios 库异步下载图片,然后将该图片保存到当前目录,然后异步启动一个重型工具来转换 将图像转换为视频(可能需要一些时间),然后向客户发送电子邮件。

在我的设计中,一切都发生在同一台服务器上(NodeJS API)。 我认为这根本不是一个好的设计,我应该将 Nodejs HTTP API 和繁重的视频处理服务器分开。 但是,这种分离意味着将图像从服务器传送到另一个服务器,我不知道该怎么做。

我认为我可以在 AWS 上使用一些有用的服务,但我不知道是哪一种以及如何使用。

能否帮助我设计这个应用程序(以及我可以使用哪些云服务?)

【问题讨论】:

    标签: node.js amazon-web-services design-patterns ffmpeg cloud


    【解决方案1】:

    因此,您需要某种编排工具。您可以查看 AWS StepFunctions。每个步骤都将在异步模式下完成,并且将处理状态。对于下载步骤,您可以在容器(例如 ECS)和 S3 上使用任何类型的存储。对于处理——同样的方式,或者,在简单的格式/大小转换的情况下,您可以使用 AWS Elastic Transcoder。可以通过 SNS 发送电子邮件。

    它有很多移动部件,所以它不仅仅是一种方法

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-19
      • 2013-08-20
      • 2014-05-06
      • 1970-01-01
      • 2010-10-01
      • 2012-10-07
      • 1970-01-01
      • 2013-01-24
      相关资源
      最近更新 更多