Node.js 什么是解多路器

Node.js 什么是解多路器

在本文中,我们将了解Node.js中的解多路器以及其反应器模式。

Node.js是迄今为止最先进的用于网络开发和编程的框架。但是,Node.js框架是基于 事件驱动架构 的,即它将生成程序中将发生的所有操作,并且必须等待I/O单元请求事件,该事件最终将通过事件解多路器和事件队列发生,并通过该事件队列将指令传递给计算机。

事件循环:

Node.js中事件循环发生的一系列步骤如下:

  • 事件驱动架构启动事件解多路器并开始数据收集,然后将这些收集到的数据发送到处理器以对其进行算术和逻辑操作。
  • 当I/O单元收集到所有数据并将其发送到处理器后,它会不断将进程添加到事件队列列表中,以便可以按照给定的FIFO(先进先出)顺序完成它们。
  • 当将进程安排在队列中时,它开始逐个弹出每个进程,以便在所有进程完成时最终使队列为空。
  • 当队列中删除了所有进程,且I/O单元也不再为事件循环添加任何进程时,事件解多路器停止执行过程。

事件循环允许用户在Node.js中为处理器创建无限的指令集,因为它是事件驱动架构进程。每当发出执行进程的请求时,它将转到事件解多路器,后者将进程的请求发送给处理器以执行操作并将其添加到队列中并提供回调选项。然后,事件队列遍历所有数据并对它们应用队列操作。上述过程不断运行,直到事件队列最终变为空,并且没有剩余的进程可以执行,事件循环将停止该进程。

反应器模式:

Node.js web框架中, 反应器模式 在程序中的解多路器功能中起着重要作用。反应器模式允许用户防止I/O单元操作的停止。I/O单元操作直接提供给Node.js中的解多路器,以避免I/O请求的阻塞。

基本上有两种类型的I/O单元操作:

  • 阻塞I/O: 它进行同步函数调用,以阻塞I/O单元的执行,直到它发送下一次的数据。
  • 非阻塞I/O: 它进行异步函数调用,以继续执行程序,并且不调用处理器来阻塞来自I/O单元的输入。

    解多路器的重要性:

  • I/O单元非常慢: I/O单元在执行操作时非常慢,对于在Node.js框架中的事件循环中将数据传输到处理器需要很长时间。对于间接与CPU数据通信延迟需要很长时间,导致程序执行的延迟增加。从技术上讲,Node.js中程序执行的延迟增加将导致超出时间限制,最终程序执行将中断。因此,我们使用复用器快速将数据传输到处理器。

  • 阻塞I/O: 阻塞I/O会阻止来自I/O单元的数据传输,以防止数据在处理器中大块存储,直到前一个指令被处理器完成,以提高执行效率。它无法处理大量由I/O单元发送的请求,因此会阻塞来自I/O单元的数据一段时间。为了避免同时进行多线程请求,它使用事件循环的方法,被复用器批准的指令继续到事件队列,然后逐个传输到处理器进行执行。
  • 非阻塞I/O: 非阻塞I/O在处理器中执行数据执行过程,而不会阻塞由I/O单元提供的多个请求的线程。它使用轮询总线仲裁方法,将具有最高优先级的多线程请求放在队列中首先执行,其余请求在其后执行。这是一个非常耗时的过程,因为CPU必须浪费时钟周期来决定总线主机和事件循环中每个线程请求的优先级。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程