使用cluster和node-webworker构建高性能node.js应用程序

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.

这个配置有问题吗?

小智 0

您可能想看看 Q-Oper8,因为它应该为此类事情提供更灵活的架构。完整信息位于:

https://github.com/robtweed/Q-Oper8