Multithreading Node.js是否适合计算密集型web服务

Multithreading Node.js是否适合计算密集型web服务,multithreading,apache,node.js,iis,computation,Multithreading,Apache,Node.js,Iis,Computation,我将创建一组包含计算密集型代码的web服务。计算时间从1/2秒到20秒不等。计算是用C代码实现的 我可能不会有超过20个同时的web服务请求,其中只有几个是运行时间较长的计算 我的理解是node.js在单个线程中运行,因此我必须编写一个node.js插件,该插件将与我的C代码接口。然后,C代码必须在自己的线程中执行。我将使用node.js提供的线程池异步运行这些计算。我会在多核机器上运行它,以最大限度地提高性能 我描述的架构听起来正确吗?node.js适合这样做吗?Apache或IIS在这样的应

我将创建一组包含计算密集型代码的web服务。计算时间从1/2秒到20秒不等。计算是用C代码实现的

我可能不会有超过20个同时的web服务请求,其中只有几个是运行时间较长的计算

我的理解是node.js在单个线程中运行,因此我必须编写一个node.js插件,该插件将与我的C代码接口。然后,C代码必须在自己的线程中执行。我将使用node.js提供的线程池异步运行这些计算。我会在多核机器上运行它,以最大限度地提高性能


我描述的架构听起来正确吗?node.js适合这样做吗?Apache或IIS在这样的应用程序中会更好吗?

您可以制作一个本机C程序,让node执行二进制文件,并在完成后回调。我认为有两种方法,下面是一个
child\u process.exec(command,[options],callback)
复制自:

编辑
如果启动流程后需要将输入传递给流程,请改用

Node可以很好地处理apache的任务;我使用主机文件和动态页面;我的应用程序逻辑是javascript代码,当对特定路由发出特定HTTP请求时,Express会调用该代码


你可能会使你的机器陷入困境,除非你限制同步计算。我对线程池没有任何知识或评论。可以帮助管理并发计算(和其他控制流任务)。

您可以制作一个本机C程序,让节点执行二进制文件,并在完成后回调。我认为有两种方法,下面是一个
child\u process.exec(command,[options],callback)
复制自:

编辑
如果启动流程后需要将输入传递给流程,请改用

Node可以很好地处理apache的任务;我使用主机文件和动态页面;我的应用程序逻辑是javascript代码,当对特定路由发出特定HTTP请求时,Express会调用该代码


你可能会使你的机器陷入困境,除非你限制同步计算。我对线程池没有任何知识或评论。可以帮助管理并发计算(和其他控制流任务)。

这似乎只适用于独立的可执行文件?我真的需要能够调用函数并传入和返回复杂数据。有没有办法做到这一点?我认为这是可能的,但我没有任何进一步的了解-德国劳埃德船级社!这似乎只适用于独立的可执行文件?我真的需要能够调用函数并传入和返回复杂数据。有没有办法做到这一点?我认为这是可能的,但我没有任何进一步的了解-德国劳埃德船级社!
var childProcess = require('child_process'),
     ls;

 ls = childProcess.exec('ls -l', function (error, stdout, stderr) {
   if (error) {
     console.log(error.stack);
     console.log('Error code: '+error.code);
     console.log('Signal received: '+error.signal);
   }
   console.log('Child Process STDOUT: '+stdout);
   console.log('Child Process STDERR: '+stderr);
 });

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