2013-09-12 4 views
0

У меня есть несколько приложений API Node.js. Все они следуют очень похожей модели.Несколько обработчиков событий в одном процессе? Или распределить между процессами

Существует один HTTP-сервер (экспресс), который слушает запросы и отправляет запросы на вставку.

Существует еще один обработчик событий, который слушает эту очередь (в настоящее время он находится в mongodb, но может быть redis или что-то еще) и обрабатывает элементы, если они найдены, и повторяет попытку через определенный промежуток времени.

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

Какой подход лучше? Разделение обработчиков на разные процессы или наличие обоих обработчиков в каждом процессе (моя текущая настройка)? Примерно 90% моих вызовов API приводят к добавлению элемента в очередь, который позже будет обработан обработчиком очереди.

Я первоначально разделил их оба на два разных приложения-узла, но я объединил их в один, чтобы упростить управление процессами и приложениями на сервере.

ответ

1

Обратите внимание на приложение 12-factor, в котором рекомендуется запускать отдельные приложения для различных независимых задач. Тем не менее, я рекомендую разместить все задачи в одном репозитории кода, чтобы упростить сквозное тестирование и синхронизировать их. Затем используйте метод, например Procfiles, для запуска нескольких экземпляров различных приложений.

+0

Спасибо за 12-факторную ссылку. Прочитал бы это. Я не думаю, что мне нужно полагаться на Procfiles, поскольку у меня есть собственная настройка сервера. Я бы предпочел полагаться на свои собственные сценарии инициализации, если мне нужно управлять ими как отдельными приложениями. – Munim

Смежные вопросы