выполнение множества параллельных http-запросов с использованием node.js - PullRequest
8 голосов
/ 15 апреля 2011

Мне было поручено разделить процесс на множество меньших процессов, работающих параллельно и распределенных по нескольким подчиненным машинам. Запрос поступает через HTTP, сервер разделяет его на несколько дочерних процессов, запущенных на подчиненных машинах, ожидает, пока все подчиненные запросы не вернут ответы, а затем объединяет совокупные результаты в один объект данных, возвращенный в результате запрос верхнего уровня. Я думал, что node.js будет полезен, но, поскольку он однопоточный, я не могу точно сказать, возможно ли это, или он будет блокировать ожидание возврата каждого запроса, прежде чем перейти к следующему. Это возможно с node.js? Если так, может ли кто-нибудь указать мне правильное направление? то есть модуль узла, чтобы использовать или наметить, как это будет сделано?

Спасибо за любую помощь.

Ответы [ 5 ]

5 голосов
/ 15 апреля 2011

Вы можете порождать дочерние процессы вручную.

var util  = require('util'),
    spawn = require('child_process').spawn,
    node = spawn('node', ['slave.js']);

node.stdout.on('data', function (data) {
  console.log('stdout: ' + data);
});

node.stderr.on('data', function (data) {
  console.log('stderr: ' + data);
});

node.on('exit', function (code) {
  console.log('child process exited with code ' + code);
});

node.stdin.write("do my work!");

Мы ожидаем реализации API Web Worker для обработки дочерних процессов на более высокой абстракции

1 голос
/ 15 апреля 2011

Попробуйте взглянуть на node.js cluster модуль, который является менеджером многоядерных серверов.

1 голос
/ 15 апреля 2011

Вы хотите прочитать о WebWorkers. В частности, вы должны прочитать http://developer.yahoo.com/blogs/ydn/posts/2010/07/multicore_http_server_with_nodejs/

0 голосов
/ 20 сентября 2011

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

http://blog.mixu.net/2011/02/01/understanding-the-node-js-event-loop/

0 голосов
/ 15 апреля 2011

, если бы даже один из меньших процессов имел синхронный интерфейс, являющийся однопоточным, это было бы проблемой.

К счастью, узел разработан на основе асинхронных интерфейсов.

например, дочерний процесс http://nodejs.org/docs/v0.4.6/api/child_processes.html#child_process.exec

или http запросы http://nodejs.org/docs/v0.4.6/api/http.html#http.request

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...