📜  什么是解复用器?

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

什么是解复用器?

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

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

事件循环:

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

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

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

反应堆模式:

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

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

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

解复用器的重要性:

  • I/O 单元非常慢: I/O 单元在执行操作时非常慢,并且在 Node.js 框架中将数据传输到处理器以进行事件循环需要大量时间。与 CPU 数据间接通信需要大量时间延迟,并导致程序执行延迟增加。从技术上讲,Node.js 中程序执行延迟的增加会导致超出时间限制,最终会导致程序执行。因此,我们使用解复用器将数据快速传输到处理器。
  • 阻塞 I/O: 阻塞 I/O 阻塞来自 I/O 单元的数据传输,以防止处理器中的数据堆积,直到处理器完成前一条指令,因为它有助于提高执行效率。它无法处理由 I/O 单元发送的大量请求,因此它会在一定时间内阻塞来自 I/O 单元的数据。因此,为了避免同时出现任何多线程请求,它采用了发泄循环的方法,将解复用器批准的指令进入事件队列,然后将它们一一传送到处理器执行.
  • Non-Blocking I/O: Non-Blocking I/O在处理器中执行数据执行过程,而不阻塞I/O单元为多个请求提供的线程。它采用轮询总线仲裁方式,将优先级最高的多线程请求放在队列的最前面执行,其余的放在队列后面执行。这是一个非常耗时的过程,因为 CPU 必须浪费其时钟周期来决定总线主机和事件循环中每个线程请求的优先级。