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