PHP作业排队:一个uber工人/调度员还是许多较小的工人?

PHP作业排队:一个uber工人/调度员还是许多较小的工人?,php,message-queue,jobs,worker,beanstalkd,Php,Message Queue,Jobs,Worker,Beanstalkd,我开始使用异步作业/消息在PHP页面上做一些繁重的后台工作,而不是让用户坐在那里等待。到目前为止,我倾向于使用Beanstalkd而不是RabbitMQ或Amazon的SQS,但我下面的问题更一般,适用于所有这些问题: 让一个巨大的工人作为多种工作类型的调度员是否更好 工作人员根据作业类型监视所有作业和代理 只有一个到Beanstalkd的打开连接 使用元数据分派工作对象以执行实际工作 在服务器上一次只能处理1个作业 还是在同一台服务器上有多个较小的工作脚本更好 每个工人只看一种工作 与B

我开始使用异步作业/消息在PHP页面上做一些繁重的后台工作,而不是让用户坐在那里等待。到目前为止,我倾向于使用Beanstalkd而不是RabbitMQ或Amazon的SQS,但我下面的问题更一般,适用于所有这些问题:

让一个巨大的工人作为多种工作类型的调度员是否更好

  • 工作人员根据作业类型监视所有作业和代理
  • 只有一个到Beanstalkd的打开连接
  • 使用元数据分派工作对象以执行实际工作
  • 在服务器上一次只能处理1个作业
还是在同一台服务器上有多个较小的工作脚本更好

  • 每个工人只看一种工作
  • 与Beanstalkd的多个持续连接
  • 减少复杂性,因为每个脚本只做一件事
  • 其他作业类型在等待一个长作业运行时不会阻塞
  • 需要更多的资源
可能还有其他几个我甚至不知道的因素,所以任何额外的提示都将不胜感激

(如果有必要的话,我计划使用Supervisor守护一个基于PHP的工作程序脚本。目前,该工作程序将只在一台服务器上运行,但将来可能会扩展到两台……)