Php 分布式视频编码-Gearman vs Beanstalkd

Php 分布式视频编码-Gearman vs Beanstalkd,php,video-encoding,gearman,beanstalkd,Php,Video Encoding,Gearman,Beanstalkd,我希望建立一个由几十台机器组成的分布式视频编码集群。我以前从未使用过消息队列,但我开始使用的两个队列是Gearman和Beanstalk Beanstalk似乎比Gearman简单得多,也更易于使用,但它的功能不如Gearman丰富 我不明白的一件事是。。。如何在所有服务器上产生新的工作人员?我计划使用php。它是否像在CLI中使用“&”运行worker.php并让它坐在那里等待工作一样简单 我注意到gearman实际上并没有在一个作业完成后终止进程,但Beanstalk确实如此,因此我必须在每

我希望建立一个由几十台机器组成的分布式视频编码集群。我以前从未使用过消息队列,但我开始使用的两个队列是Gearman和Beanstalk

Beanstalk似乎比Gearman简单得多,也更易于使用,但它的功能不如Gearman丰富

我不明白的一件事是。。。如何在所有服务器上产生新的工作人员?我计划使用php。它是否像在CLI中使用“&”运行worker.php并让它坐在那里等待工作一样简单

我注意到gearman实际上并没有在一个作业完成后终止进程,但Beanstalk确实如此,因此我必须在每个作业完成后在每个服务器上重新启动脚本

目前我更倾向于使用Beanstalk,我计划的总体流程是:

在每台服务器上运行一个每分钟一次的cron,检查是否有预定义数量的工作进程正在运行。如果低于预期值,则生成新的工作进程。每个过程大约需要2-30分钟


也许我的逻辑有缺陷?让我知道做这件事的“更好”或“适当”方法是什么

我将使用的术语只是试图澄清。。。 有生产者和消费者的概念。生产者生成的作业放在队列(即beanstalk服务)上,然后由使用者读取

编写一个消费者有多种方法。您可以通过cron作业在每个x时间段运行该任务,也可以通过php(或其他)让消费者在while1循环中运行

在何处安装该服务实际上取决于您的目标。对我来说,我通常在消费者或其单独的盒子上安装服务(有时后者会根据您的需要而过度使用)


如果您想要队列端的持久性,那么应该使用Beanstalk的binlog参数(-b)。如果您的beanstalk服务出现问题,这将允许您以最小的队列数据丢失(如果没有信息)重新启动。生产者方面的耐用性可能来自于有多个队列可供尝试

请务必查看Pheanstalk:请原谅我的天真,但是对于这两个消息传递框架中的任何一个,“服务器”安装在哪里?在将处理卸载进程的远程计算机上,或者在将新作业通知远程计算机的计算机上?使用这些服务的成本太高。