📜  Node.js的工作流程

📅  最后修改于: 2022-05-13 01:56:23.889000             🧑  作者: Mango

Node.js的工作流程

Node.js 是一个开源和跨平台的运行时,构建在顶级 chrome 的 v8 JavaScript 引擎之上。基本上,现在它很受欢迎。许多服务器使用 node.js 来运行应用程序。

为什么这么有名?

让 Node.js 出名的主要有两个特性:

  • 非阻塞 I/O
  • 异步

非阻塞 I/O:考虑一个服务器和一个客户端,客户端发送一些数据的请求,然后服务器将响应发送给客户端。当多个(I/O)请求到来时会发生什么 -

Node 基本上运行一个线程,但是当请求到来时它会将该请求发送给其他一些工作人员,这些工作人员会处理该请求。请求可能是 I/O 操作或从数据库中获取数据或与其他一些服务器交互以执行操作。因此,通过这种方式,接受请求不会有任何延迟。

让我们将它与其他一些服务器(如 tomcat)进行比较,它有大约 200 个线程在运行,这意味着它可以接受 200 个请求,如果有 210 个请求,那么这 10 个请求必须等待一段时间。这可以通过使用 node.js 来解决。但在幕后,node.js 使用了专门为 node.js 构建的 libuv 库,它也可以被其他框架使用。这个 libuv 是使用 C 语言构建的。 C 在内部使用具有多个线程的系统内核。在 node.js 中,我们没有使用多线程。但是在节点后面使用了多线程的概念。

异步:在非阻塞中,我们只讨论了请求,但是如果客户端 1 进程完成并且服务器发送请求,这里就出现了异步概念。当我们得到响应节点时的动作会执行回调函数(事件循环)。然后将响应发送回客户端。

当我们有更多的 I/O 相关操作时,首选节点。由于单线程,它在 CPU 密集型工作时会滞后。 Node.js 每秒可以处理多达 34k 个事务,延迟为 2 到 300 毫秒。