我迫切需要扩展在EC2上运行的video处理应用程序。
到目前为止,设置是一台机器:
Backbonejs前端Rails 3.2 Postgresql Resque + S3存储
该应用程序的stream程如下:
1)来自前端的请求。 上传video。 2)存储video3)查询外部API。 4)处理/编码video。 5)发布到前端。
我可以分开后端和前端没有任何问题,但是当涉及到分布在几个服务器之间的后端,我有点困惑。 我可能会想出一个临时解决scheme(就像复制应用程序创build多个实例),但由于我没有真正的后端系统pipe理专业知识,可能会有一些基本的错误。另外,我宁愿有一些可扩展的。 我想知道有没有人可以对下面的计划提供一些反馈意见:
A)前端机器。 就在前端,通过REST Api来进行后端对话。 B)后端服务器(BS),主数据库。 从1)获取请求,发布到2)将上传保存到3)C)S3存储。 D)用于查询API的服务器。 基本上只是一个Resque工作人员,该信息发回到2)E)服务器video编码。 处理3)上传的video并上传回去。
所以我会有:
A)frontend \ \ B)MAIN_APP/DB ----- C)S3 Storage (Files) / \ / / \ / D)ExternalAPI_queries E)Video_Processing (redundant DB) (redundant DB)
所有这些都会通过HTTP请求相互通话。
我之所以这样做,是因为video处理部分是最耗费资源的部分,我只是运行准备接受请求并开始处理它们的准系统应用程序。
问题:
1)在这种设置中,我将在B)的主数据库和所有其他服务器将通过HTTP请求(并存储数据库的重复也我猜…出于安全原因)与它通信。 这是正确的方法,或者我应该有一个数据库,每个人都连接到(如何?)
2)从video处理部分分离API查询是一个好主意吗? 从逻辑上说,它们非常接近(处理由API查询的结果决定),但是资源方面的video处理则更encryption集。
3)我应该使用什么来分配基于负载的后端应用程序之间的呼叫?