2012-02-26 4 views
0

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

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

Очевидно, что nodejs не имеет возможности создавать новые потоки без какой-либо беспорядочной реализации. Стоит ли порождать новый процесс для выполнения этой потенциально дорогостоящей задачи, я могу определить, когда она будет дорогой командой, отправленной с родительского сервера.

+0

Возможно ли использовать очереди сообщений и создать несколько рабочих процессов, а? – Alfred

ответ

1

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

Node.js Child Processes Node.js Fork

http://nodejs.org/docs/latest/api/child_processes.html#child_process.fork

+0

Это не потоки, это процессы. – Raynos

+0

Вы правы, конечно. Мне нужен кофе! Ответ обновлен. –

+0

Как говорится в документации: «Эти дочерние узлы по-прежнему являются целыми новыми экземплярами V8. Предположим, что для каждого нового узла требуется не менее 30 мс и 10 МБ памяти, т. Е. Вы не можете создать много тысяч». вы не можете создать много из них. Но это может сработать, если вы не создадите много процессии. – Alfred

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