En este artículo, aprenderemos sobre el demultiplexor en Node.js y sobre su patrón de reactor.
Node.js es el marco más avanzado disponible para el desarrollo y la programación web disponible hasta ahora. Pero el marco Node.js se basa en la arquitectura dirigida por eventos, es decir, generará todas las operaciones que ocurrirán en el programa y tendrá que esperar a que la unidad de E/S solicite el evento que eventualmente se llevará a cabo a través del demultiplexor de eventos y la cola de eventos a través de la cual se pasan las instrucciones a la computadora.
Bucle de eventos:
La serie de pasos en los que se produce el bucle de eventos en Node.js es la siguiente:
- La arquitectura basada en eventos inicia el demultiplexor de eventos y comienza la recopilación de datos y luego envía estos datos recopilados al procesador para aplicarle operaciones aritméticas y lógicas.
- Después de que la unidad de E/S recopila todos los datos y los envía al procesador, agrega continuamente los procesos a la lista de cola de eventos para que puedan completarse en una secuencia determinada de FIFO (primero en entrar, primero en salir).
- Cuando los procesos se organizan en la lista de la cola, comienza a aparecer cada proceso uno por uno para que finalmente la cola se vacíe al finalizar todos los procesos.
- Cuando todos los procesos se eliminan de la cola y la unidad de E/S tampoco agrega más procesos para el bucle de eventos en el procesador, el demultiplexor de eventos detiene el proceso para su ejecución.
El bucle de eventos permite al usuario crear un conjunto infinito de instrucciones para el procesador en Node.js, ya que es un proceso de arquitectura basado en eventos. Cada vez que llega una solicitud para realizar un proceso, va al demultiplexor de eventos, que envía la solicitud del proceso al procesador para aplicar la operación y agregarla a la cola y brinda una opción de devolución de llamada. La cola de eventos luego atraviesa todos los datos y les aplica la operación de cola. El proceso anterior se ejecuta continuamente hasta que la cola de eventos finalmente se vacía y no quedan procesos para ejecutar, el ciclo de eventos detiene el proceso.
Patrón de reacción:
El patrón Reactor en el marco web Node.js juega un papel importante en la funcionalidad del demultiplexor en el programa. El patrón Reactor Pattern permite al usuario evitar la detención de las operaciones que son procesadas por las operaciones de la Unidad de E/S. Las operaciones de la unidad de E/S se proporcionan directamente al demultiplexor en Node.js para evitar el bloqueo de las requests de E/S.
Básicamente dos tipos de operaciones de unidades de E/S:
- Bloqueo de E/S: Realiza una llamada de función síncrona para detener la ejecución desde la unidad de E/S hasta que envíe los datos para la próxima vez.
- Non-Blocking I/O: Realiza una llamada de función asíncrona para continuar con la ejecución del programa y no llama al procesador para bloquear la entrada de la unidad de E/S.
Importancia del demultiplexor:
- La unidad de E/S es muy lenta: la unidad de E/S es muy lenta para realizar las operaciones y lleva mucho tiempo transferir datos al procesador para el bucle de eventos en el marco de Node.js. Lleva mucho tiempo retrasar la comunicación indirecta con los datos de la CPU y da como resultado una mayor latencia en la ejecución del programa. Técnicamente, el aumento de la latencia en la ejecución del programa en Node.js hará que se exceda el límite de tiempo y la ejecución del programa eventualmente lo hará. Por lo tanto, usamos un demultiplexor para transferir los datos rápidamente al procesador.
- Bloqueo de E/S: El Bloqueo de E/S bloquea la transmisión de datos desde la unidad de E/S para evitar la acumulación de datos en el procesador hasta que el procesador finalice la instrucción anterior, ya que ayuda a aumentar la eficiencia de la ejecución. No puede manejar una gran cantidad de requests enviadas por la unidad de E/S y, por lo tanto, bloquea los datos de la unidad de E/S durante un cierto período de tiempo. Por lo tanto, para evitar requests de subprocesos múltiples al mismo tiempo, utiliza el enfoque de bucle de ventilación en el que las instrucciones aprobadas por el demultiplexor pasan a la cola de eventos y luego, una por una, se transfieren al procesador para su ejecución. .
- E/S sin bloqueo: la E/S sin bloqueo realiza el proceso de ejecución de datos en el procesador sin bloquear los subprocesos proporcionados por la unidad de E/S para múltiples requests. Utiliza el método de arbitraje de bus de sondeo en el que la solicitud de subprocesos múltiples con la prioridad más alta se coloca primero en la cola para su ejecución y el resto se coloca después para la ejecución. Es un proceso que requiere mucho tiempo ya que la CPU tiene que desperdiciar su ciclo de reloj para decidir el bus maestro y la prioridad de cada solicitud de subproceso en el bucle de eventos.