我的网站是用PHP构建的。我有一个WWW服务器,所有上传最终都要进行处理,然后它们会被发送到4个媒体服务器中的一个。如果上传速度缓慢且稳定,WWW服务器会快速转换它们,但如果一群人同时上传某些内容,它们会排队,并且可能需要几个小时才能处理文件。
媒体服务器通常是空闲的,因为从SSD驱动器提供文件导致没有iowait,因此CPU只是坐在那里,我想利用它进行转换。
这样做的好(简单)方法是什么?
答案 0 :(得分:2)
让WWW服务器将文件复制到媒体服务器,并在那里运行一个转换它们的连续进程,然后以某种方式通知Web服务器。
以下是使用数据库进行状态通信的示例:
可以通过以循环方式将文件传递到媒体服务器来处理分配,或者甚至可以让它们报告当前的工作负载,以便可以使用最不繁忙的服务器。
(你还有视频的SSD存储空间吗?我想要一些......)
答案 1 :(得分:0)
为什么网络服务器首先进行ffmpeg转换?无论如何,媒体服务器似乎应该这样做。
当上传到达时,复制上传媒体服务器,循环播放。您可以检测介质服务器上的负载并复制到最少使用的负载。发信号通知复制的服务器进行ffmpeg转换。完成后,介质服务器会将已处理的文件复制到其余服务器的rsync位置。
对我来说似乎相当简单。
答案 2 :(得分:0)
您可以使用ssh -e none hostname command < infile > outfile
从Web服务器在介质服务器上执行转换过程,通过stdin管道传输文件并通过stdout获取输出文件。
如果您的网络受到适当保护,您可以使用rsh
代替,并避免加密的计算开销,但您必须 非常 某些没有其他人可以访问您的媒体服务器,因为rsh
是远程执行漏洞利用的教科书示例。