EventLoop: asíncrona por diseño
Clase 3 de 31 • Curso de Fundamentos de Node.js
Contenido del curso
Clase 3 de 31 • Curso de Fundamentos de Node.js
Contenido del curso
Karl Behrens Gil
Aldo Yedro
Alonso Fabricio Samanez Nuñez
Brando Rodríguez
ANTHONY JEAMPIER RANGEL RODRIGUEZ
María Jimena Rodríguez Contreras
Juan Esteban Deossa Pertuz
Jimmy Buriticá Londoño
Mariano Gastón Paduani
Andres Gallego
Mariano Gastón Paduani
Andres Roberto Coello Goyes
Bulmaro Arellano Navarrete
María Jimena Rodríguez Contreras
Joaquin Retola Noya
Josué Ramírez Hernández
Emanuel Valero
Orlando Flores Huanca
Carlos Enrique Ramírez Flores
Abner Batz
Juan Jose Vega
Gustav Caves
Alexis Bustamante
Andrea Rodríguez
Alejandro Giraldo Londoño
Pablo Cesar Acosta Paredes
Fabián Ignacio Toro Riquelme
Jesús Miguel Quinto Teran
María Sierra
Nicolas Alvarez Tobon
Francisco Garcia [C6]
Andres Robles
Mauricio Gonzalez Falcon
Mauricio Gonzalez Falcon
David Antonio Garcia Saaib
++Event Queue:++ Contiene todos los eventos que se generan por nuestro código (Funciones, peticiones, etc.), estos eventos quedan en una cola que van pasando uno a uno al Event Loop.
++Event Loop:++ Se encarga de resolver los eventos ultra rápidos que llegan desde el Event Queue. En caso de no poder resolverse rápido, enviá el evento al Thread Pool.
++Thread Pool:++ Se encarga de gestionar los eventos de forma asíncrona. Una vez terminado lo devuelve al Event Loop. El Event Loop vera si lo pasa a Event Queue o no.
Gracias!
:thumbsup:
EventLoop: asíncrona por diseño ++Event loop++: Un proceso con un ++bucle ++que gestiona, de forma asíncrona, todos los eventos de tu aplicación.
gracias por el aporte
que padre se ve,excelente información
El Event Loop es la forma en que Node funciona, tiene principalmente un hilo llamado Event Queue, en este es donde se enfilan todas las acciones que se van a ejecutar. Pero si por alguna razón a esta fila llega un evento que se demora como un setTimeout, una promesa o algo más, este tipo de eventos irán a parar a el Thread Pool, es un segundo hilo que se crea para resolver estos eventos con sus propios subs-hilos, una vez estos eventos son resolvidos se les manda de nuevo al Event Queue para que puedan ser ejecutados de manera correcta.
Buena explicación
Gracias
Mis notas de esta clase!
Muchas gracias por el aporte!
Si quieres aprender mas sobre el asincronismo https://platzi.com/clases/asincronismo-js/ :)
Gracias!!
muchas gracias
Alguien más se imagina el Event Loop así? jajaja
Jajajaja tal cual
Aca dejo la documentación de node, donde describen y explican de qué se trata esto del event loop: https://nodejs.org/uk/docs/guides/event-loop-timers-and-nexttick/
Muchas Gracias por el aporte.
Gracias!!
El papel de Thread Pool es; para cada petición que tenga que hacer levanta un hilo nuevo en el procesador y automáticamente se encarga que ese proceso se ejecute, al concluir dispara un evento y lo devuelve al Event Loop.
Que el thread pool levante otro hilo me parece épico
Total, Épico
node, delega las tareas que toman mas tiempo mientras ejecuta las de menor tiempo.
ejemplo.
crear un servidor http con node, toma mucho mas tiempo que hacer un console.log. por ende lo primero que se ejecuta es el console.log
const http = require('http'); const server =http.createServer(function (req,res) { console.log("Servidor creado"); }); console.log("hola mundo");
en consola quedará Hola mundo Servidor Creado
++ASINCRONIA POR DISEÑO:++
++EventLoop:++ Es un proceso que se comporta como un bucle y se gestiona de forma automática. Todo lo que pase en la aplicación funciona de forma asíncrona asegurando que no se va a bloquear el bucle y todo lo que le enviemos va a ejecutarse aparte. El bucle puede seguir recibiendo peticiones. Es por esto que Node JS se considera como altamente recurrente y se usa en muchas aplicaciones que requieren múltiples entradas y salidas. Lo podemos imaginar como un circulo dando vueltas, los eventos vienen desde la cola de eventos o Event Queue
++Event queue:++ Va a tener todo lo que se ejecute en el código y lo va a ir enviando uno a uno hacia el event loop en donde se van a procesar.
++Thread Pool:++ En caso de que no sea rápido de resolver se va a enviar al Thread Pool, allí se empezara a gestionar de forma asíncrona. Lo que hace es levantar un hilo nuevo que se encargara de que el proceso se ejecute, una vez termine de ejecutarse el Thread Pool dispara un evento y se devuelve a el Event Loop y si es necesario a el Event Queu
El funcionamiento asíncrono nos sirve para que no se bloquee el hilo principal, ya que las operaciones mas lentas, con bases de datos o lectura de archivos, se van a seguir ejecutando en su propio hilo. Cada hilo se encargara de gestionar sus procesos lentos.
Esto diferencia a Node.JS de otros leguajes como PHP, Python o Java que son síncronos y una operación va detrás de la otra.
RESUMEN PARCIAL:
EventLoop: asíncrona por diseño
Evento loop es un bucle que gestiona de forma asíncrona y automática de todos los eventos de tu aplicación. No va a bloquearse el bucle, recibe peticioens en todo momento, por esto es altamente concurrente.
Imagina un ciclo que recibe las cosas desde el Event Queue. Llena su cola con eventos, request, function, lo procesa, si el procesado que hace no es rápdio lo manda al thread pool, que gestiona de forma asíncrona todo. Lo que son praciones de DB, archivos, slow Ops. Este es el concepto clave para diferenciar lenguajes de servidores, como php, java, py que siendo sincronos tardan mucho las operaciones en ejecutarse. Node ejecuta en paralelo las cosas, por lo que es muy eficiente.
El thread pull, para cada petición levanta un hilo/thread nuevo para cada proceso, cuando termine lo devuelve al Event Queue. Ventajas: Lo hace muy rápido, Desventajas: Tiene problema de seguridad y gestión de errores
Gran resumen !!
Excelente ! tome el curso de Nodejs con este profe y ahora este y ya me siento casi experto jajaja se viene despues el Curso practico también con este profe, ahora si que voy a quedar Senior wujaja
Importante: Cuando ocurre un error dentro de alguno de los hilos y no se controla apropiadamente (catch); Node detiene todos los hilos ejecución. Esto puede ser muy peligroso, debido a que es dificil determinar fue el origen del problema y en que punto de ejecución se encontraba cada hilo cuando fue detenido.
EventLoop: asíncrona por diseño
El Event Loop es un proceso con un bucle que gestiona, de forma asíncrona, todos los eventos de tu aplicación.
Para que lleguen los eventos al Event Loop primero estarán en el Event Queue, aquí tendremos todos los eventos. Después pasarán al Event loop y si este no logra procesarlo rápidamente lo mandará al Thread Pool, aquí es donde se comenzará a gestionar todo de forma asíncrona.
Este es un excelente artículo sobre como funciona el evenloop, lo mejor es que es animado y permite entenderlo de una forma muy visual: https://dev.to/lydiahallie/javascript-visualized-event-loop-3dif
EventLoop: Asincronia por diseño Es un bucle, que gestiona de forma asincrona todos los eventos de tu aplicacion Todo lo que le enviemos a ejecutarlo, y sigue recibiendo peticiones. ¯\_(ツ)_/¯
Event Loop: es un proceso repetitivo que se encarga de gestionar de forma asíncrona todos los eventos que suceden en tu aplicación. Los eventos que llegan al event loop llegan desde el event Queue (cola de eventos) este contiene todo lo que se ejecute en nuestra aplicación, los manda uno a uno al event loop y este se encarga de procesarlos, solo los que pueda, los que no lo envía al Thread Pool para que se encague de gestionar el asincronismo y la ejecución del codigo no sea bloqueada por otros procesos en ejecución. Ya que node es monohilo maneja un solo hilo, Gracias al eventLoop, Event Queue y Thread Pool nuestras apps funcionan como si manejaran multiples hilos.
++Qué es el Event Loop?++
Es un bucle, que esta ejecutándose en todo momento, y hay un proceso automático que gestiona todo lo que entra en tu aplicación, funcione de forma asíncrona.
La mejor forma de verlo como un circulo que va dando vueltas y mas vueltas. Y aquí aparece nuestro amigo el Event Queue.
El event Queue contiene cada línea de nuestro código, una expresión, un evento, etc... Todo esto se enviara al event loop y se ejecutara de forma rápida.
En caso de que no pueda hacerlo de inmediato, lo ejecutara de forma asíncrona. Todo lo que requiera ejecución de bases de datos, APIs, o tome tiempo para ejecutarse y pueda demorar lo principal. Y cada hilo se ejecutara por su parte de forma funcional.
El Event Loop es la manera en que el Motor V8 diseñado por Google Ejecuta nuestro código JS.
Cómo lo hace? Pues el event loop es un bucle sin "fin", que solo acabara cuando la Event Queue este vacia, y la event queue es quien contiene nuestro código JS.
Sí el código JS no se ejecuta de manera super rápida ese evento se envia a la Thread Pool, que por defecto, generara un hilo (Un stack) de código para que se ejecute a su ritmo, y cuando este se complete sea enviado al Event Loop, solo sí la Event Queue esta vacia.
De manera informal, el EventLoop esta todo el tiempo verificando el EventQueue para ver si hay tareas para ejecutar, si encuentra alguna la ejecuta y al terminar va por mas. Cuando una tarea tarda mas de lo normal el EventLoop manda la tarea al Thread Pool, donde se crea un nuevo hilo para que la tarea se ejecute en paralelo, y asi el EventLoop puede seguir verificando el EventQueue