在 EC2 上扩展视频处理应用程序?

在 EC2 上扩展视频处理应用程序?

我正在接近扩展在 EC2 上运行的视频处理应用程序的需求。

到目前为止设置的是一台机器:

Backbonejs 前端 Rails 3.2 Postgresql Resque + S3 用于存储

该应用程序的流程如下:

1) 从前端发出请求。上传视频。2) 存储视频 3) 查询外部 API。4) 处理/编码视频。5) 发布到前端。

我可以毫无问题地分离后端和前端,但是当涉及到在多台服务器之间分配后端时,我有点困惑。我可能可以想出一个临时解决方案(例如复制应用程序以创建多个实例),但由于我并不具备后端系统管理方面的专业知识,因此可能会出现一些根本性错误。此外,我宁愿拥有可扩展的东西。我想知道是否有人可以对以下计划提供一些反馈:

A) 前端机器。只是前端,通过各种 REST Api 与后端对话。B) 后端服务器 (BS),主数据库。从 1) 获取请求,发布到 2),将上传的内容保存到 3) C) S3 存储。D) 用于查询 API 的服务器。基本上只是一个 Resque 工作者,将信息发布回 2) E) 用于视频编码的服务器。处理在 3) 上上传的视频并将其上传回来。

因此我将拥有:

A)frontend
          \       
           \      
            B)MAIN_APP/DB ----- C)S3 Storage (Files)
             /          \              /
            /            \            /
D)ExternalAPI_queries    E)Video_Processing
   (redundant DB)           (redundant DB)

所有这些都将通过 HTTP 请求相互通信。

我这样做的原因是视频处理部分确实最耗费资源,我只需运行接受请求并开始处理它们的准系统应用程序。

问题:

1) 在此设置中,我将在 B) 中设置主数据库,所有其他服务器将通过 HTTP 请求与其通信(我猜也存储数据库的副本……出于安全原因)。这是正确的方法吗?还是我应该有一个每个人都连接的数据库(那么如何连接?)

2) 将 API 查询与视频处理部分分开是个好主意吗?从逻辑上讲,它们非常接近(处理由 API 查询的结果决定),但从资源角度来看,视频处理更加耗费资源。

3)我应该使用什么来根据负载在后端应用程序之间分配调用?

相关内容