我必须通过算法进行计算,我被建议每个打开的套接字使用子进程,我要做的就是这样:
var spawn = require('child_process').spawn;
var child = spawn('node', ['algorithem.js']);
我知道如何向算法过程发送参数以及如何接收结果。
我关心的是,我可以拥有多少个套接字(每个套接字会产生一个进程)? 如何通过我的云托管服务提供商解决此问题?以便我的应用程序自动缩放?
推荐的节点js云托管提供商是什么?
最后,这是使用子进程的好方法吗?
答案 0 :(得分:4)
是的,当您必须在节点中进行一些繁重的处理时,这是一种公平的方法。但是,启动新进程会引入一些开销,因此请注意。您可以打开的套接字(文件描述符)数量受操作系统的限制。在Linux上,可以使用例如ulimit - 实用程序来看到限制。
一种替代方法,即删除套接字/进程担心的数量,是运行单独的算法/计算服务器。这个服务器可能会产生N个工作线程,并会监听套接字。当接收到计算请求时,这可以例如由第一可用线程排队和处理。这种方法的一个优点是您的计算服务器可以在任何计算机上运行,从而为您的节点实例释放资源。