Node.js y ruby
by outboxlabs on Oct 28, 2010
- 972 views
Introducción a node.js para la rubyconf de uruguay
Introducción a node.js para la rubyconf de uruguay
Accessibility
Categories
Tags
Upload Details
Uploaded via SlideShare as Apple Keynote
Usage Rights
© All Rights Reserved
Statistics
- Favorites
- 0
- Downloads
- 9
- Comments
- 0
- Embed Views
- Views on SlideShare
- 960
- Total Views
- 972
Cada proceso instanciado requiere una cantidad de recursos importante.
El scheduler del sistema operativo se vuelve más lento con más procesos.
Este método no escala.
Los green threads, threads manejados por la MV, son por lo general más rápidos que los threads pero demoran más en cambiar de contexto.
Se puede evitar el overhead de los multiples stack de ejecución
Apache en un principio tenía un proceso por conexión. Luego con un módulo usaba un thread por conexión.
Nginx usa un loop de eventos simple.
Nginx por otro lado requiere una cantidad constante de memoria.
El mayor riesgo en ese sentido son las operaciones de E/S
Mientras que el acceso a memoria volátil demora a lo sumo cientos de ciclos de CPU, acceder a disco o a red consume millones de ciclos de CPU
Node se basa en la primicia en que así se debe manejar la E/S
Todo acceso a base de datos, a disco o a red tiene que realizarse mediante un callback.
Node nos brinda librerías no bloqueantes para algunos protocólos básicos de la web como HTTP, DNS, TCP
Los desarrolladores javascript están acostumbrados a desarrollar orientado a eventos
Un lenguaje como javascript es ideal para implementar callbacks ya que las funciones son ciudadanos de primera clase en Javascript.
V8 es rápido y hay muchos compitiendo por hacer javascript más rápido
- El stop-the-world garbage collection de V8 puede traer problemas cuando se está consumiendo mucha memoria
- Casi todas son solucionables
Es particularmente util para aplicaciones en tiempo real usando comets
Pero se necestia mantener muchas más conexiones abiertas y eso con el modelo de un thread por conexión no es escalable