javascript - Node.js Web 服务器中的并行请求

标签 javascript node.js webserver

如果我有一个运行 Node.js 的 Web 服务器,那么我是否能够同时处理多个请求?从我的初步测试中我可以看出,主要是单线程的 Node 目前只能处理一个 HTTP 请求。但是,如果一个请求需要很长时间才能完成(例如,上传大量数据),那么所有其他请求都必须等待。

这种情况有解决办法吗?我们能否编写可以同时处理多个 HTTP 请求的代码?

最佳答案

Node 是单线程的这一事实并不一定意味着它一次只能处理 1 个请求。

Node 中的很多事物 都是故意异步的;例如许多文件系统操作、数据库查询等。这是以下人员的心态:

I know you're going to take some time to do this, so call me when you're done and in the meantime I'm going to put my single-thread of operation to some better use, rather than waiting for you to complete.

其他工作(可以是其他请求)就是在那个时候被处理的。当然,如果他们然后必须执行异步操作,操作流程可能会返回到我们之前暂停的地方,因为另一个操作已经完成。

在您进行大量上传的情况下,传入的流是异步处理的,并通过 data event 进行管理。 .如果你想将这个流写入磁盘,同样,writing can be performed asynchronously ;即在文件上传过程中有一些点可以处理其他请求。

只有拥有多个 CPU 内核时,拥有多个操作线程才有用;那么每个操作线程都可以在不同的内核上运行。为此,Node 有 cluster module ,你应该看看。

关于javascript - Node.js Web 服务器中的并行请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15191248/

相关文章:

c# - 如何从基于浏览器的游戏 Web 服务器获取本地应用程序以轮询游戏数据

javascript - 使用reactjs分割数组值

javascript - 如何在 NodeJS 中维护请求 session

node.js - 条件参数类型与架构类型不匹配

node.js - 快速路线不返回

bash - 将 bash 变量传递给内联 perl 脚本

javascript - 使用 Nodejs 提供图像

javascript - 如何运行 data-dojo-attach-event?

javascript - Chirpy 和 ASP.NET 4

javascript - 动态更改散点图大小和形状 - LightningChart JS