Если я использую node.js, мне все еще нужен сервис очереди? - PullRequest
2 голосов
/ 09 декабря 2011

Раньше, когда я использовал Django, мне была нужна очередь, чтобы делать тяжелые вещи за кулисами. (может занять 1 секунду или более, попадать в базы данных, запросы и т. д.).

Если я использую Node.js, мне все еще нужна очередь? Могу ли я выполнять все тяжелые операции в node.js асинхронно?

Ответы [ 2 ]

1 голос
/ 09 декабря 2011

Вам, вероятно, нужна очередь, если вы выполняете тяжелую работу.

Сущность файла node.js заключается в том, что существует одна очередь событий, и (по большей части) происходит только одна вещь.за один раз.

Преимущество node.js в том, что большая часть кода библиотеки является асинхронной - например, ваш драйвер базы данных сделает запрос к базе данных, а затем разрешит что-то еще происходит в цикле событий узла.Таким образом, вы можете обрабатывать новые входящие запросы, ожидая, пока база данных вернется к вам.

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

Итак, если вы делаетечто-то «большое», вы захотите выбросить это в очередь событий, чтобы не блокировать основной цикл.

Помимо таких вещей, как вычисления, я бы даже сказал, что вы хотите поставить в очередь вещи, где выне знаю, сколько времени может занятьНапример, одним из моих последних проектов было приложение для управления рабочими процессами на основе состояния в Ruby on Rails.Когда объекты состояния меняют состояние, вызывается любое количество функций для продвижения рабочего процесса.В node.js я бы поставил эти переходы в очередь в очередь, потому что я не знаю, сколько функций будет добавлено к обратному вызову перехода состояний по мере развития приложения, и бизнес добавляет новые функциональные возможности в приложение.Немного об этом блокирующем материале в официальном документе, который я написал на node.js .Он охватывает и другие вещи, но асинхронная часть имеет много ссылок от сообщества и лучших практик, как я понимаю этот материал

0 голосов
/ 09 декабря 2011

Поскольку вы выполняете тяжелую работу вне серверного приложения, оно не блокирует сервер.

Возможно, вам понадобится очередь позже, если у вас будет все больше и больше одновременных соединений, чтобы вы могли распределять работу между процессами. Kue - хорошая очередь на основе Node.js.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...