Подтвердить что ты не робот

Node Работники JS - любая потребность в них?

Простите мое невежество, но, исходя из фона Django/Python, я вижу огромную выгоду от того, что очередь сельдерей работает через более медленные процессы в фоновом режиме, в то время как веб-интерфейс обновляется как можно быстрее.

Однако, используя Node, работающий асинхронно, используется прецедент для системы очереди, значительно уменьшенной?

Например:

1 - пользователь отправляет что-то на сайт, 2 - сайт отвечает, затем отправляет администратору сообщение.

В Django вы отправите почту администратора в задачу, которая будет выполнена позже, а затем ответьте на запрос. Сельдерей отправляет почту в фоновом режиме.

В Node вы вызываете свою почтовую программу, а затем отвечаете на запрос. Затем почтовая программа отправляет обратный вызов, чтобы сказать DONE или нет, и в этот момент пользователь уже просматривает ответ.

Итак, почему я должен использовать очередь с Node? Я предполагаю, что когда все сложнее, чем это, кажется, что для тривиальных вещей, таких как транзакционные письма, это не нужно.

Или я не понимаю, как это работает!?

4b9b3361

Ответ 1

Вы правы, продолжения в приложении node довольно хороши, и если вы запускаете все в одном процессе node, нет никакой необходимости в очереди. Однако, поскольку node является однопоточным, node не сможет обрабатывать новые входящие запросы, когда он занят отправкой этого сообщения или обработкой этой задачи (если это интенсивная задача с процессором)

Итак, если ваши задачи требуют времени для обработки процессора, все равно стоит использовать внешнюю очередь и отдельный процесс для обработки этих задач/сообщений. Если ваши задачи неактивны и требуют некоторого времени, потому что они ждут ответов от других серверов, например, тогда меньше необходимости снова, поскольку node отлично справляется с io.

Если у вас есть интенсивная задача с процессором, но вы не хотите развертывать очередь, вы можете просто создать больше процессов < node, а также экземпляры компьютеров и балансировки нагрузки между ними, что позволит им обрабатывать эти задачи. Недостатком такого подхода является то, что вы не можете масштабировать веб-сайт и обработку фона отдельно. (например, 5 экземпляров, имеющих дело с веб-запросами и 2 экземплярами работников)

Ответ 2

Нет, всегда есть случаи для очередей, даже в мире Node. Основной подход, который я видел, когда несколько человек используют в разной степени успеха, использует резервную копию Redis для хранения сообщений или задач. У вас может быть один Node процесс добавления элементов в очередь, с другими элементами обработки экземпляров Node из очереди. Кроме того, посмотрите список модулей Node для модулей очереди, и вы увидите приличное количество реализаций.