¿Por qué Node.js es un lenguaje de un solo subproceso?

Las aplicaciones creadas sobre node.js utilizan la arquitectura del modelo de bucle de eventos de subproceso único para manejar varios clientes simultáneos como JSP, Spring MVC, ASP.NET, HTML, Ajax, jQuery, etc. Son otras tecnologías web que se pueden usar en lugar de Node. .js, pero estas tecnologías enumeradas siguen una arquitectura de «Solicitud-respuesta de subprocesos múltiples» para manejar múltiples clientes concurrentes.

Subproceso único: la plataforma Node JS no sigue el modelo sin estado de solicitud/respuesta de subprocesos múltiples. Sigue el modelo de subproceso único con bucle de eventos. Modelo de procesamiento de Node JS inspirado principalmente en el modelo basado en eventos de JavaScript con mecanismo de devolución de llamada de JavaScript. Debido a lo cual, Node.js puede manejar más requests de clientes concurrentes con facilidad. El bucle de eventos es el corazón del modelo de procesamiento de Node.js, como se muestra en el siguiente diagrama.

Modelo de bucle de evento de subproceso único de aplicación/servidor Node.js

Descripción del diagrama:

n = Número de requests de los clientes al servidor web Node.js.
Supongamos que están accediendo a nuestra aplicación web construida sobre Node.js al mismo tiempo. Los clientes son Client-1, Client-2. . . Cliente-n.
m = número de subprocesos en el grupo de subprocesos.

El servidor web recibe Client-1, Client-2 . . . hasta las requests de Client-n y las coloca en la cola de eventos.

Ventajas del bucle de eventos de subproceso único sobre el modelo sin estado de solicitud/respuesta de subprocesos múltiples:

  1. Puede manejar más y más requests de clientes concurrentes con facilidad.
  2. Elimina la necesidad de crear más y más subprocesos, debido al bucle de eventos.
  3. Las aplicaciones creadas sobre node.js utilizan la menor cantidad posible de subprocesos para reducir el uso de memoria o recursos.

La razón detrás de node.js utiliza la arquitectura del modelo de bucle de eventos de subproceso único:

  • Inicialmente, node.js se creó como un experimento de procesamiento asíncrono y, en teoría, hacer un procesamiento asíncrono en un solo subproceso podría proporcionar más rendimiento y escalabilidad bajo cargas web típicas que la implementación típica basada en subprocesos cuando la aplicación no utiliza la CPU. cosas intensivas y puede ejecutar miles de conexiones concurrentes más que Apache o IIS u otros servidores basados ​​en subprocesos.
  • La naturaleza asíncrona de subproceso único de node.js también complica las cosas, pero el subproceso es peor que esto en términos de tiempo necesario para diseñar una aplicación, costo de desarrollo, interbloqueos, inversiones de prioridad y todas las demás cosas que vienen en el ciclo de vida de una aplicación.
  • También hay un problema muy conocido y criticado con el modelo de un subproceso por solicitud para un servidor, que es que no escalan muy bien para varios escenarios en comparación con el modelo de subprocesos de bucle de eventos, en resumen, carecen de escalabilidad como la aplicación. crece para satisfacer las demandas futuras y con la adición de nuevas características.
  • Como Node.js sigue un modelo de bucle de eventos con subproceso único inspirado en el modelo basado en eventos de JavaScript con mecanismo de devolución de llamada de JavaScript. Por lo tanto, node.js es un subproceso único similar a JavaScript, pero no es un código puramente JavaScript, lo que implica que las cosas que se realizan de forma asíncrona, como las llamadas de red, las tareas del sistema de archivos, la búsqueda de DNS, etc., en realidad no son manejadas por el subproceso principal y están en C++ como Ryan Dahl no es fanático de JavaScript y también C++ tiene acceso a múltiples subprocesos que lo convierten en un mejor lenguaje para tareas asincrónicas.

Referencia: https://nodejs.org/en/docs/

Publicación traducida automáticamente

Artículo escrito por jt9999709701 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *