очередь сообщений — PHP. Очередь заданий: один рабочий / диспетчер или много мелких работников?

Я начинаю использовать асинхронные задания / сообщения для выполнения какой-то тяжелой фоновой работы на странице PHP вместо того, чтобы заставлять пользователя сидеть там и ждать его. Пока что я склоняюсь к использованию Beanstalkd поверх RabbitMQ или Amazon SQS, но мой вопрос ниже является более общим и относится ко всем из них:

Лучше ли иметь одного огромного работника в качестве диспетчера для нескольких типов работ?

  • Работник следит за всеми работами, делегаты в зависимости от типа работы
  • Только одно открытое соединение с Beanstalkd
  • Использовать метаданные для отправки объектов Worker для выполнения реальной работы?
  • Может обрабатывать только одну работу за раз на сервере

Или лучше иметь несколько меньших целевых рабочих сценариев на одном сервере?

  • Каждый работник смотрит только 1 вид работы
  • Несколько устойчивых связей с Бинстальк
  • Меньшая сложность, так как каждый скрипт делает только одно
  • Другие типы заданий не засоряются при ожидании выполнения одного длинного задания
  • Занимает больше ресурсов

Вероятно, есть несколько других факторов, о которых я даже не знаю, поэтому любые дополнительные советы будут оценены.

(Если это имеет значение, я планирую демонизировать рабочий сценарий на основе PHP с помощью Supervisor. На данный момент рабочий будет работать только на 1 сервере, но в будущем он может увеличиться до двух …)

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]