Node.js — Масштабирование приложения с помощью child_process

Node.js — Масштабирование приложения с помощью child_process

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

В дочерних процессах всегда есть три потока child.stdin , child.stdout и child.stderr, которые могут совместно использоваться потоками stdio родительского процесса. Существует модуль Node js child process, который поддерживает три основных способа создания дочернего процесса.

exec — метод child_process.exec запускает команду в оболочке/консоли и буферизует вывод.

spawn — child_process.spawn запускает новый процесс с помощью заданной команды.

fork — метод child_process.fork является особым случаем spawn() для создания дочерних процессов.

Метод exec()

Метод child_process.exec запускает команду в оболочке и буферизирует вывод. Он содержит следующую подпись:

Параметры

Ниже приводится описание используемых параметров:

command (String) — команда для запуска с аргументами, разделенными пробелом

options (Object) — может содержать один или несколько из следующих параметров:

—cwd (String) — текущий рабочий каталог дочернего процесса

—env (Object) — ключи-значения для среды

—encoding (String) — (по умолчанию: ‘utf8’)

—shell (String) — оболочка, с которой выполняется команда (по умолчанию: ‘/ bin / sh’ в UNIX, ‘cmd.exe’ в Windows, оболочка должна понимать ключ -c в UNIX или /s/c в Windows. В Windows парсинг командной строки должен быть совместим с cmd.exe.)

—timeout (Number) — (По умолчанию: 0)

—maxBuffer (Number) — (по умолчанию: 200 * 1024)

—killSignal (String) — (по умолчанию: «SIGTERM»)

—uid (Number) — устанавливает идентификатор пользователя процесса.

—gid (Number) — устанавливает групповой идентификатор процесса.

callback — функция принимает три аргумента error , stdout и stderr, которые вызываются с выходными данными при завершении процесса.

Метод exec() возвращает буфер с максимальным размером и ожидает завершения процесса, после чего пытается сразу вернуть все буферизованные данные.

Пример

Создадим два js-файла с именем support.js и master.js —

Файл: support.js

Файл: master.js

Теперь запустите master.js:

В результате должен быть запущен сервер.

Метод spawn()

Метод child_process.spawn запускает новый процесс с помощью заданной командой. Он содержит следующую подпись:

Параметры

Ниже приводится описание используемых параметров:

command (String) — запускаемая команда

args (Array) — список аргументов строки

options (Object) — может содержать один или несколько из следующих параметров:

—cwd (String) — текущий рабочий каталог дочернего процесса.

—env (Object) — пары ключ-значение среды.

—stdio (Array) — строка конфигурации stdio дочернего процесса.

—customFds (Array) — устаревшие дескрипторы файлов для дочерних элементов, которые будут использоваться для stdio.

—detached (Boolean) — дочерний процесс будет лидером группы процессов.

—uid (Number) — устанавливает идентификатор пользователя процесса.

—gid (Number) — устанавливает групповой идентификатор процесса.

Метод spawn() возвращает потоки (stdout & stderr), он должен использоваться, когда процесс возвращает большой объем данных. spawn() начинает принимать ответ, сразу после начала выполнения процесса.

Пример

Создайте два js-файла с именем support.js и master.js —

Файл: support.js

Файл: master.js

Теперь запустите master.js:

Проверьте вывод. Сервер запущен

Метод fork()

Метод child_process.fork является особым случаем spawn() для создания процессов Node. Он содержит следующую подпись:

Параметры

Ниже приводится описание используемых параметров:

modulePath (String) — Модуль для запуска в дочернем элементе.

args (Array) — Список аргументов строки

options (Object) — Может содержать один или несколько из следующих параметров:

—cwd (String) — Текущий рабочий каталог дочернего процесса.

—env (Object) -Пары ключ-значение среды.

—execPath (String) — Исполняемый файл, используемый для создания дочернего процесса.

—execArgv (Array) — Список строковых аргументов, переданных исполняемому файлу (по умолчанию: process.execArgv).

—silent (Boolean) Если true, stdin, stdout и stderr для дочернего процесса будут перенаправлены в родительский процесс, иначе они будут унаследованы от родительского процесса, см. параметры «pipe» и «inherit» для stdio для spawn() (по умолчанию — false).

—uid (Number) — Устанавливает идентификатор пользователя процесса.

—gid (Number) — Устанавливает групповой идентификатор процесса.

В дополнение к тому, что он содержит все методы, что и стандартный экземпляр дочернего процесса, метод fork возвращает объект со встроенным каналом связи.

Пример

Создайте два js-файла с именем support.js и master.js —

Файл: support.js

Файл: master.js

Теперь запустите master.js:

В результате вы должны получить следующее.

Источник: //www.tutorialspoint.com/

Редакция: Команда webformyself.

Метки:

Похожие статьи:

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