如何在Node.js中处理大量对象

时间:2019-07-06 20:13:43

标签: node.js dataset nodejs-stream highland.js nodejs-server

我想处理长度大约为100 000的数组,而又不会给CPU造成太大的负担。我研究了流,偶然发现了highlandjs,但是我无法使其工作。

我也尝试过使用promise和成块处理,但是仍然给CPU带来了很大的负担,如果需要,程序可能会变慢,但是不应该给CPU带来负担

1 个答案:

答案 0 :(得分:1)

使用node.js以单线程运行Javascript,如果您希望服务器最大程度地响应传入的请求,则需要从http服务器主进程中删除所有占用大量CPU的代码。这意味着需要以其他方式进行CPU密集型工作。

有很多不同的方法可以做到这一点:

  1. 使用child_process模块启动另一个nodejs应用程序,该应用程序旨在完成CPU密集型工作。
  2. 对您的应用程序进行聚类,以便您拥有N个不同的进程,这些进程既可以完成CPU密集型工作,又可以处理请求。
  3. 创建工作队列和许多工作进程,以处理CPU密集型工作。

如果您不经常执行CPU密集型工作,那么#1可能是最简单的。

如果您出于其他原因(例如处理大量传入请求)而需要扩展,并且您不经常执行CPU密集型工作#2。

如果您非常定期地执行占用大量CPU资源,并且希望传入请求处理始终具有最高优先级,并且您愿意让占用大量CPU资源的时间更长,那么#3(工作队列)可能是最好的选择并且您可以调整辅助进程的数量以优化结果。