使用Node.js运行多个并行的HTTP请求

8
我被委托将一个进程拆分为许多小进程并行运行,分布在多台从机上。请求通过HTTP发送,服务器将其拆分成多个子进程,并发给从机,等待所有从机请求返回响应,然后将聚合结果汇总为单个数据对象,作为顶级请求的结果返回。我认为node.js可能很有用,但由于它是单线程的,我无法确定是否可能实现,或者它是否会阻塞等待每个请求返回,然后再继续下一个请求。使用node.js可以实现吗?如果可以,请问有人能指点一下方向吗?例如使用哪个node模块或概述如何完成此操作?
感谢任何帮助。
5个回答

5
你可以手动创建子进程
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!");

我们期待实现一个Web Worker API,用于在更高的抽象层面上处理子进程。

1

1

尝试查看node.js cluster 模块,它是一个多核服务器管理器。


0

在Node的Http.request文档中,它说:“Node为每个服务器维护多个连接以进行HTTP请求。” 我的理解是,我可以在for循环中发出http请求,跟踪所有结果,然后在它们全部返回时调用我的回调函数。然而,这种方法似乎取决于节点保持打开的连接数,正如该句中所述,这意味着它将并行化该过程,直到我达到池中可用请求的数量。有人知道如何将该数字增加到100吗? - Jake

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接