javascript - 在同一端点 API 上处理 Express Sever 的多个并发请求
问题描述
这个问题可能会重复,但我仍然没有得到答案。我对 node.js 还很陌生,所以我可能需要一些帮助。许多人说 node.js 可以完全自由地异步运行传入的请求,但下面的代码显示,如果多个请求到达同一个端点,比如/test3,回调函数将:
- 打印“test3”
- 调用 setTimeout() 防止事件循环阻塞
- 等待 5 秒,然后向客户端发送“test3”的响应
我这里的问题是,如果客户端 1 和客户端 2 同时调用/test3端点,这里的假设是客户端 1 首先命中端点,客户端 2 必须等待客户端 1 先完成才能进入事件循环。
这里的任何人都可以告诉我,多个客户端是否可以调用单个端点并同时运行,而不是按顺序运行,而是类似于每个连接 1 个线程的类比。
当然,如果我在代码仍在/test3上执行时调用其他端点/test1或/test2,我仍然会直接从/test2获得响应,即“test2”。
app.get("/test1", (req, res) => {
console.log("test1");
setTimeout(() => res.send("test1"), 5000);
});
app.get("/test2", async (req, res, next) => {
console.log("test2");
res.send("test2");
});
app.get("/test3", (req, res) => {
console.log("test3");
setTimeout(() => res.send("test3"), 5000);
});
解决方案
这个问题需要更多细节才能回答,显然是一个基于意见的问题。只是因为这是一个稻草人的论点,我会回答它。
首先我们需要定义run concurrently,如果我们假设严格理论中的字面意思是不明确的,那就是nothing CONCURRENTLY
CPU 一次只能执行一条指令。
CPU 执行指令的速度称为时钟速度。这是由时钟控制的。随着时钟的每一个滴答声,CPU 获取并执行一条指令。时钟速度以每秒周期数来衡量,1c/s 被称为1 赫兹。这意味着时钟速度为2 吉赫 (GHz)的 CPU 可以为我们其他人/世界每秒 20 亿个周期 执行2 亿次(或美国为 20 亿次)。cpu“同时”运行多个任务
是的,您现在是计算机,甚至手机都带有多核,这意味着同时运行的任务数量将取决于内核的数量,但是如果您问任何专家,例如这位 助理工程师,我会告诉您,您很少会找到具有多个内核的服务器。如果您可以使用 kubernetes 生成一堆 ...nano 或免费试用中可用的任何选项,您为什么要花 500 美元购买多核服务器。
另一件事。你为什么要处理/配置节点来负责路由让 apache 和/或 nginx 担心这一点。
正如你所提到的,有一个叫做事件循环的东西,它是一种命名队列数据结构FIFO的奇特方式
换句话说。不,不会运行nodejs 以及任何其他编程语言
但绝对取决于您的基础设施。
推荐阅读
- powershell - csv中的Powershell格式单元格
- soap - 什么是
- ios - 使用 DropDownMenu Swift 4 约束关闭容器 UIView 中的面板
- google-bigquery - 如何将时间分区表与模板表一起使用并且 BigQuery 的限制超过 4000?
- jquery - 在 django 应用程序中的图像上绘制简单线条的最佳方法是什么
- swift - 在 NSTableView 中显示和使用核心数据
- angular - VSCode 智能感知不适用于 Angular 项目
- reactjs - 为什么我的图片在 Postman 表单数据中成功上传,但在我的反应代码中却没有?
- pandas - PyCharm 在 spyder 成功时尝试读取大的 .csv 文件时失败
- mysql - 如何配置学说(Symfony 4)与 MySQL 8.0 连接?