#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