Entender el modelo de enventos de Node.js

Entender el modelo de enventos de Node.js

El tradicional modelo de hilos de la web actual, se basa en que las peticiones viajan hasta el servidor web y son asignadas a un hilo disponible. La tarea de la petición continúa ejecutándose hasta que la tarea finaliza, por ejemplo tengamos en cuenta una petición cualquier para leer un fichero, esta tarea es asignada a un hilo de ejecución y se realizarán de forma continuada los trabajos tales como:

· Petición 1 → Hilo 1 → Obtener Fichero → Abrir Fichero → Leer Fichero → Enviar Fichero

Si hubiera otra petición igual, se crearía un nuevo hilo de ejecución

· Petición 2 → Hilo 2 → Obtener Fichero → Abrir Fichero → Leer Fichero → Enviar Fichero

Esta forma de proceso (modelo imperativo de instrucciones) suele producir problemas con las funciones de bloqueo de Entrada / Salida. De hecho una de las características del nuevo Node.JS es que evita este bloqueo I/O gracias a que usa el nuevo modelo de programación orientada a eventos y callbacks .

¿ Qué es Node.js?

Node.js es actualmente una plataforma de desarrollo bastante popular que cuenta con un activo y numeroso grupo de seguidores por todo el mundo.

javascript ha vuelto para quedarseLa naturaleza modular de Node hace que se esté creando una cultura realmente ágil y proactiva que crea y publica módulos para , prácticamente, cualquier cosa que podamos necesitar.

Node.js fue creado en 2009 por Ryan Dahl como respuesta una frustración causada especialmente cuando tenía que trabajar con servicios web, por esos días, Google acababa de crear el motor V8 de Javascript para su navegador Chrome el cual permita optimizar notablemente el tráfico web de una forma espectácular. Ran Dahl creó Node.js usando V8 pero como entorno del lado del servidor.

El resultado fue un extremadamente escalable y potente entorno de desarrollo javascript pero del lado del servidor que nos permite a los programadores crear verdaderas y súper rápidas aplicaciones javascript susceptibles de ejecutarse en el servidor y que permiten, al mismo tiempo, una comunicación fácil entre el lado del cliente ( navegador web ) y el servidor la ser lenguaje javascript.

De hecho Node.js ahora es usado por empresas como Linkedin, Yahoo, eBay o el propio Microsoft y aunque se puede usar para casi todo, principalmente se usa para creare REST APIS, aplicaciones de servidor, juegos multijugador y para aplicaciones con alta necesidad de recursos.

¿Cómo lo hace Node.js?

Siguiendo con el ejemplo anterior, Node.js en lugar de ejecutar el trabajo de cada tarea hasta que finalice o solicitudes en hilos individuales, lo que hace es añadir la tarea a una cola de eventos y entonces un solo hilo ejecuta ejecuta un bucle que coge cada tarea y la ejecuta.

El funcionamiento es el siguiente, el bucle comienza por la primera tarea de la cola de eventos, la ejecuta y pasa a la siguiente elemento de la cola. Si el código fuente de cada tarea ejecutada permanece ejecutándose o tiene tareas específicas de bloqueo de I/O , en lugar de ejecutarse la función hata que finalice , lo que hace node es añadir la tarea a una lista de eventos pasándole como parámetro una función ( callback ) la cual es llamada justo cuando tarea es completada.

Esto es como una fiesta

Un ejemplo muy usado para entender el funcionamiento del nuevo modelo de programación orientado a eventos y sus diferencias con el modelo tradicional imperativo de hilos de los servidores web, es considerar este entorno como tener diferentes conversaciones con un gran grupo de personas diferentes en una fiesta.
Cada uno de nosotros como integrante de la fiesta, actuaremos como parte del servidor web, y las conversaciones representan el trabajo necesario para procesar los diferentes tipos de peticiones web. Tus conversaciones se interrumpen y continúan constantemente, y así éstas se dividen en diferentes segmentos y se realizan con otros individuos de la fiesta. Por lo tanto, acabas de hablar con un individuo y luego con otro y así vuelves a hablar algo con el primero y entonces con el tercero, y más tarde vuelves a hablar con el segundo, retomas la conversación por donde la dejaste y de nuevo vuelves a hablar con la cuarta persona con la que hablaste y así con todas las personas de la fiesta.

 

No Comments

Post A Comment