我的任务是将流程拆分为许多并行运行的小流程,并分发给多台从机。请求通过HTTP传入,服务器将其分解为发送到从属计算机的多个子进程,等待所有从属请求返回响应,然后将聚合结果整理为单个数据对象,作为结果返回顶级请求。我认为node.js会很有用,但由于它是单线程的,我无法确定这是否可能,或者它是否会阻止等待每个请求返回之后再转到下一个请求。这可能与node.js一起使用吗?如果是这样,有人会指出我正确的方向吗?即节点模块使用或概述如何完成它?
感谢您的帮助。
答案 0 :(得分:5)
你可以产生child processes 手动
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)
您想了解WebWorkers。具体来说,您应该阅读http://developer.yahoo.com/blogs/ydn/posts/2010/07/multicore_http_server_with_nodejs/
答案 2 :(得分:1)
尝试查看作为多核服务器管理器的node.js cluster模块。
答案 3 :(得分:0)
如果一个较小的进程中只有一个同步接口是单线程的,那将是一个问题。
幸运的是节点是围绕异步接口设计的。
,例如子进程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
答案 4 :(得分:0)
我认为这篇博文可能有趣的是,async如何帮助并行执行,以及如何与Node进行并行执行。
http://blog.mixu.net/2011/02/01/understanding-the-node-js-event-loop/