Mar*_*ark 5 concurrency performance cluster-computing web-worker node.js
我不是node.js的主人,所以我想对此有更多的观点.
我正在创建一个HTTP node.js Web服务器,它不仅必须处理大量并发连接,还必须处理长时间运行的作业.默认情况下,node.js在一个进程上运行,如果有一段代码需要很长时间才能执行任何后续连接,则必须等到代码结束它在前一个连接上执行的操作.
例如:
var http = require('http');
http.createServer(function (req, res) {
doSomething(); // This takes a long time to execute
// Return a response
}).listen(1337, "127.0.0.1");
Run Code Online (Sandbox Code Playgroud)
所以我想使用node-webworker库在不同的线程中运行所有长时间运行的作业:
var http = require('http');
var sys = require('sys');
var Worker = require('webworker');
http.createServer(function (req, res) {
var w = new Worker('doSomething.js'); // This takes a long time to execute
// Return a response
}).listen(1337, "127.0.0.1");
Run Code Online (Sandbox Code Playgroud)
为了使整个事情更高效,我还想使用集群为每个CPU核心创建一个新的节点进程.
通过这种方式,我希望通过不同的进程平衡客户端连接cluster(如果我在四核上运行它,则说4个节点进程),然后在不同的线程上执行长时间运行的作业node-webworker.
这个配置有问题吗?