Node.js es una plataforma basada en JavaScript que se utiliza principalmente para crear aplicaciones web intensivas de E/S, como aplicaciones de chat, sitios de transmisión multimedia, etc. Está construido sobre el motor JavaScript V8 de Google Chrome. Una aplicación web es un software que se ejecuta en un servidor y es representado por un navegador cliente que accede a todos los recursos de la aplicación a través de Internet.
Una aplicación web típica consta de los siguientes componentes:
- Cliente: un cliente se refiere al usuario que interactúa con el servidor mediante el envío de requests.
- Servidor: El servidor se encarga de recibir las requests de los clientes, realizar las tareas adecuadas y devolver los resultados a los clientes. Sirve como puente entre el front-end y los datos almacenados, lo que permite a los clientes realizar operaciones en los datos.
- Base de datos: Una base de datos es donde se almacenan los datos de una aplicación web. Dependiendo de la solicitud del cliente, los datos se pueden crear, modificar y eliminar.
Arquitectura del servidor Node.js: para administrar varios clientes simultáneos, Node.js emplea un diseño de «bucle de eventos de un solo subproceso». El modelo basado en eventos de JavaScript y el mecanismo de devolución de llamada de JavaScript se emplean en el modelo de procesamiento de Node.js. Emplea dos conceptos fundamentales:
- modelo asíncrono
- No bloqueo de operaciones de E/S
Estas funciones mejoran la escalabilidad, el rendimiento y el rendimiento de las aplicaciones web de Node.js.
Componentes de la Arquitectura Node.js:
- Requests: según las acciones que un usuario deba realizar, las requests al servidor pueden ser de bloqueo (complejas) o no de bloqueo (simples).
- Servidor Node.js: el servidor Node.js acepta las requests de los usuarios, las procesa y devuelve los resultados a los usuarios.
- Cola de eventos: el uso principal de la cola de eventos es almacenar las requests de clientes entrantes y pasarlas secuencialmente al bucle de eventos.
- Grupo de subprocesos: el grupo de subprocesos en un servidor Node.js contiene los subprocesos que están disponibles para realizar las operaciones necesarias para procesar las requests.
- Event Loop: Event Loop recibe requests de Event Queue y envía las respuestas a los clientes.
- Recursos externos: para gestionar el bloqueo de las requests de los clientes, se utilizan recursos externos. Pueden ser de cualquier tipo (computación, almacenamiento, etc).
Flujo de trabajo del servidor Nodejs:
- Los usuarios envían requests (de bloqueo o de no bloqueo) al servidor para realizar operaciones.
- Las requests ingresan primero a la cola de eventos en el lado del servidor.
- La cola de eventos pasa las requests secuencialmente al bucle de eventos. El bucle de eventos comprueba la naturaleza de la solicitud (bloqueo o no bloqueo).
- Event Loop procesa las requests sin bloqueo que no requieren recursos externos y devuelve las respuestas a los clientes correspondientes
- Para las requests de bloqueo, se asigna un solo subproceso al proceso para completar la tarea mediante el uso de recursos externos.
- Después de completar la operación, la solicitud se redirige al bucle de eventos que devuelve la respuesta al cliente.
ventajas:
- El servidor Node.js puede manejar de manera eficiente una gran cantidad de requests mediante el uso de Event Queue y Thread Pool.
- No es necesario establecer varios subprocesos porque Event Loop procesa todas las requests de una en una, por lo que un solo subproceso es suficiente.
- Todo el proceso de atender requests a un servidor Node.js consume menos memoria y recursos del servidor, ya que las requests se manejan de una en una.
Publicación traducida automáticamente
Artículo escrito por neeraj26pathak y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA