NodeJS Next API Route如何处理多个并发请求?

sbdsn5lh  于 2023-10-17  发布在  Node.js
关注(0)|答案(1)|浏览(169)

假设我已经创建了下一个具有API路由的应用程序。假设两个用户向该API发送请求,将文件上传到S3存储桶,那么我的后端将对文件进行一些处理,这可能需要2分钟以上。这是怎么处理的?如何确保用户获得自己的处理文件,而不是彼此的?那么,假设只使用一台服务器,这个API如何为多个用户提供服务呢?
是否有一个内置的消息队列,用于对请求进行排队处理,并使用http头返回适当的响应?

m3eecexj

m3eecexj1#

Next.js本身没有内置的消息队列。
next API只是一个node.js服务器。所以你的问题可能会被问到“Node.js如何处理多个并发请求?“
Node.js使用带有事件循环的单线程。通过这种方式,Node可以处理1000个并发连接。
From here
Node采用了一种稍微不同的方法来同时处理多个并发请求,如果你将它与其他一些流行的服务器(如Apache)进行比较的话。为每个请求生成一个新线程是昂贵的。此外,线程在等待其他操作的结果时什么也不做(即:数据库读取)。
这种方法有许多优点。创建新线程没有开销。此外,您的代码更容易推理,因为您不必担心如果两个线程访问同一个变量会发生什么。因为这根本不可能发生。但也有一些缺点。对于主要处理CPU密集型计算的应用程序来说,Node不是最佳选择。另一方面,它擅长处理多个I/O请求。
文件上传被认为是Web应用程序上下文中的I/O(输入/输出)操作。当用户通过Web界面上传文件时,服务器必须从客户端设备读取数据(输入),然后将其写入存储位置(输出)。从客户端阅读和向存储写入都是I/O操作。
简而言之,BRAC代码首先注册。事件循环连续地检查已注册的PDMC操作的状态。它管理一个事件队列及其相关的回调函数。当一个candic操作完成时,它被推送到事件循环的队列中。当主线程变得可用时,事件循环调度要在主线程上执行的关联回调函数。

相关问题