Node.js nodejs不应该做什么?
我现在已经进行了几周的节点深度潜水。我从Anthony关于udemy的优秀课程中学到了很多,目前我正在阅读一本书《nodejs the right way》。我还阅读了很多文章,这些文章提出了一些关于使用节点和耦合其他技术的真实世界场景的非常好的观点 然而,这似乎被认为是一条规律,即不使用节点作为单线程体系结构来执行计算繁重的任务。我了解了事件循环和异步回调等概念。事实上,如果我理解正确,节点的强度源于大量并发IO连接。不管我在哪里阅读,源代码都警告不要挂断执行任务的线程。我似乎找不到任何经验法则来避免在进程中使用节点。我见过一个解决方案,它说node应该将计算量大的任务传递给RabbitMQ这样的消息服务,专用的应用程序服务器可以通过该服务(有什么建议可以与node进行此任务的配对吗?我读了一些关于N层体系结构的文章)。我之所以如此困惑,是因为我看到节点被用来读取和写入文件,以突出流的使用,但在我看来,获取/读取/写入文件是一项昂贵的任务(我感觉错了) Tl;Dr节点应该将哪些类型的任务传递给工作主机服务器?我可以阅读哪些详细解释范例的材料Node.js nodejs不应该做什么?,node.js,nginx,Node.js,Nginx,我现在已经进行了几周的节点深度潜水。我从Anthony关于udemy的优秀课程中学到了很多,目前我正在阅读一本书《nodejs the right way》。我还阅读了很多文章,这些文章提出了一些关于使用节点和耦合其他技术的真实世界场景的非常好的观点 然而,这似乎被认为是一条规律,即不使用节点作为单线程体系结构来执行计算繁重的任务。我了解了事件循环和异步回调等概念。事实上,如果我理解正确,节点的强度源于大量并发IO连接。不管我在哪里阅读,源代码都警告不要挂断执行任务的线程。我似乎找不到任何经验法
编辑:我的不理解似乎源于不知道在一个明显的同步IO请求之外,什么会首先停止一个线程。因此,如果我理解正确,读写数据就是IO,在IO中,改变所述数据或进行数学计算在计算上是昂贵的(当然,在不同的水平上取决于任务)。谢谢你的回答 如果您使用node.js作为服务器,那么运行长时间运行的同步计算任务会占用一个线程,并且在计算期间,您的服务器不会响应其他请求。对于服务器来说,这通常是一个糟糕的情况 因此,node.js服务器设计的一般设计原则如下:
fs.readFile()
,而不是fs.readyFileSync()