node.js дочерние процессы

#node.js #child-process

#node.js #дочерний процесс

Вопрос:

Я пытаюсь выяснить, будет ли это достойным вариантом использования для node.js дочерние процессы:

У меня есть многопользовательская игра, в которой люди участвуют в матчах 1 на 1. Должен ли я использовать дочерний процесс для каждого совпадения?

Комментарии:

1. Зачем вам это? в этом нет необходимости, если только вы не выполняете блокирующие операции.

Ответ №1:

На самом деле не требуется. Поскольку узел основан на событиях, и один процесс сможет обрабатывать тысячи таких пар игроков. Вы бы создавали «комнаты» / «группы» / «каналы» для каждой такой пары, предполагая, что вы используете now.js . Номенклатура может варьироваться в зависимости от используемой вами библиотеки, но общий подход будет таким же — назначить всех игроков, которые будут играть друг против друга в одном и том же «канале». Если вы на самом деле используете дочерний процесс для каждой такой пары игроков, вы фактически убиваете цель, с которой node.js строится.

С другой стороны, реальный пример использования порождения дочернего процесса реализован в forever.js (а также cluster.js ). Здесь дочерний процесс (также известный как рабочий) порождается главным процессом. Рабочий процесс выполняет фактическую работу, скажем, обрабатывает HTTP-запрос, в то время как главный процесс должен отслеживать только рабочий процесс и порождает новый рабочий процесс, если существующий умирает (по разным причинам). Дочерние процессы также используются для вызова приложений, отличных от nodejs.

Ответ №2:

Классная вещь в Node.JS заключается в том, что вы можете создавать почти всю логику в одном потоке, и благодаря некоторым довольно интересным функциям ядра, Node знает, когда новая информация о сокете готова к обработке.

Одна вещь, которую этот узел точно пытается убежать, — это модель с одним потоком на соединение. Взгляните на это. Node подходит для приложений, связанных с вводом-выводом, поэтому, если ваша игра требует слишком большой обработки, например, вычисления физических объектов, Node может вам не подойти.

Комментарии:

1. «если ваша игра требует слишком большой обработки, например, вычисления физических объектов, Node может вам не подойти» — это уже не так: nodejs.org/docs/latest/api/cluster.html