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

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

4 голосов
/ 30 октября 2011

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

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

Ответы [ 2 ]

5 голосов
/ 30 октября 2011

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

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

2 голосов
/ 30 октября 2011

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

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

...