节点.js和 CPU 密集型请求
我已经开始修补Node.js HTTP服务器,并且非常喜欢编写服务器端Javascript,但有些事情使我无法开始在我的Web应用程序中使用Node.js。
我理解整个异步 I/O 概念,但我有点担心过程代码占用大量 CPU 的边缘情况,例如图像处理或对大型数据集进行排序。
据我所知,对于简单的网页请求,服务器将非常快,例如查看用户列表或查看博客文章。但是,如果我想编写非常CPU密集型的代码(例如在管理后端)来生成图形或调整数千张图像的大小,则请求将非常慢(几秒钟)。由于此代码不是异步的,因此在这几秒钟内到达服务器的每个请求都将被阻止,直到我的慢速请求完成。
一个建议是将 Web Worker 用于 CPU 密集型任务。但是,我担心Web工作者会很难编写干净的代码,因为它可以通过包含单独的JS文件来工作。如果 CPU 密集型代码位于对象的方法中,该怎么办?为每个CPU密集型方法编写一个JS文件有点糟糕。
另一个建议是生成一个子进程,但这会使代码的可维护性更差。
有什么建议来克服这个(感知的)障碍吗?如何使用 Node 编写干净的面向对象代码.js同时确保异步执行 CPU 密集型任务?