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

San*_*ria 2 javascript webserver node.js

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

这种情况有解决方法吗?我们可以编写代码,以便它可以同时服务多个HTTP请求吗?

Mat*_*att 7

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

Node中的很多东西都是故意异步的; 例如许多文件系统操作,数据库查询等.这是以下的思维方式:

我知道你需要花一些时间来做这件事,所以当你完成时给我打电话,同时我会把我的单线程操作更好用,而不是等你完成.

此时,处理其他工作(可以是其他请求).当然,如果他们必须执行异步操作,操作流程可能会返回到我们之前暂停的位置,因为其他操作已经完成.

在发生大型上载的情况下,传入的流将以异步方式处理,并通过data事件进行管理.如果要再将此流写入磁盘,则可以异步执行写入操作 ; 即在文件上载过程中有一些点可以处理其他请求.

拥有多个操作线程只有在拥有多个CPU核心时才有用.然后每个操作线程可以在不同的核心上运行.要做到这一点,Node有你应该看的cluster模块.