我有一个Node.js网络应用程序,我需要在大型矩阵上进行一些繁重的计算。由于Node.js是事件驱动的,我预计这会导致我的Web应用程序性能不佳。使用Node处理CPU繁重任务的最佳方法是什么?
我可以将计算卸载到像Python这样的内置服务器吗?
答案 0 :(得分:9)
在这种情况下,您真正想做的是 Addon 。
Node.js文档中描述的Addons是动态链接的共享对象。它们可以为C和C ++库提供粘合剂。
所以你可以用较低级别的语言( C / C ++ )编写繁重的计算,并且比使用JavaScript更有效率地执行它,无论 V8 有多强大
阅读有关如何使用Addons的文档,我相信您会发现它是NodeJS的一个出色功能。
答案 1 :(得分:1)
是的 - 你可以卸载到另一台服务器。只需使用您的常规请求方法来发布您需要“计算”的数据。由于请求是异步的,因此不会阻止Node的正常流程。当请求回来时,您已经获得了所需的数据,并且可以在将其提交给客户之前进行任何最后的更改。
然后,您可以拥有一个处理这些内容的“服务器场” - 例如,在EC2上,您可以创建负载均衡器,然后让节点向该平衡器发出请求。不需要在节点内部做任何花哨的事情,比如记住哪个服务器是最后一个服务器或类似的东西。
或者,如果这更像是一个命令行,并且不需要非常可伸缩,那么可以使用node的exec进行系统调用,然后再次调用回调,无论返回是什么。 / p>
无论你做什么,都不要在节点内进行那些计算:) - 你的期望是正确的。它会轰炸你的表演,因为我学习了很多次。 Async是你的朋友。