在node.js应用程序中处理CPU密集计算



我有一个node.js Web应用程序,我需要在大型矩阵上进行一些重型计算。由于Node.js是事件驱动的,因此我预计这将导致我的Web应用程序性能差。用节点处理CPU重型任务的最佳方法是什么?

我可以将计算卸载到诸如Python之类的另一台服务器吗?

在这种情况下,您真正想做的是 addon

addons如Node.js文档中所述,是动态链接的共享对象。它们可以为C和C 库提供胶水。

因此,您可以用较低级别的语言( c/c )编写重型计算,并且无论使用JavaScript而言,它都会更有效地进行操作,无论 v8 是多么强大。

阅读有关如何使用插件的文档,我相信您会发现它是nodejs的绝妙功能。

是的 - 您可以将其卸载到另一台服务器。只需使用您的正常请求方法发布您需要"计算"的数据。由于请求是异步,因此不会阻止节点的正常流。当请求返回时,您已经获得了所需的数据,并且可以在将其泵送给客户之前进行任何最后一分钟的更改。

然后,您可以拥有一个处理这些问题的"服务器农场" - 例如,在EC2上,您可以创建负载平衡器,然后只有节点向该均衡器提出请求。无需在节点内部做任何奇特的事情,例如记住哪个服务器是最后一台命中或类似的东西。

另外,如果这更像是命令行的东西,并且不需要可怕的可扩展性,则可以使用Node的Exec进行系统调用,然后再一次使用返回。<<<<<<<<<</p>

无论您做什么,都不要在节点内部进行这些计算:) - 您的预期是正确的。这会轰炸您的表现,因为我学到了几次艰难的方式。异步是您的朋友。

最新更新