我希望建立一个由几十台机器组成的分布式视频编码集群。我以前从未使用过消息队列,但我开始使用的两个是 Gearman 和 Beanstalkd。
Beanstalk 似乎比 Gearman 更简单易用,但功能却不如 Gearman。
我不明白的一件事是......你如何在所有服务器上产生新的工作人员?我打算用php。是否像在 CLI 中使用 "&" 运行 worker.php 并让它坐在那里等待工作一样简单?
我注意到 gearman 在工作完成后实际上并没有终止进程,但 Beanstalk 会,所以我必须在每台服务器上的每个工作之后重新启动脚本。
目前我更倾向于使用 Beanstalk,我计划的大致流程是:
在每台服务器上运行一个分钟的 cron 来检查是否有预定义数量的工作人员正在运行。如果它低于预期,则产生新的工作进程。每个过程大约需要 2-30 分钟。
也许我的逻辑在这里有缺陷?让我知道这样做的“更好”或“正确”方式是什么?