SlideShare una empresa de Scribd logo

Aspectos nodejs

Juan Antonio Gil Martínez-Abarca
Juan Antonio Gil Martínez-Abarca
Juan Antonio Gil Martínez-AbarcaDirector Técnico en Escuela Politécnica Superior. Universidad de Alicante

Presentación tema 4 de la asignatura "Servidores web" del Máster Universitario en Desarrollo de Aplicaciones y Servicios Web. sobre Nodejs

Aspectos nodejs

1 de 10
Descargar para leer sin conexión
AISI
Administración de Servidores Web: nodejs
MWS nodejs
nodejs
MWS nodejs
Open Source
Server side javascript
V8: Javascript desarrollado por
Google
Nodejs.org: “Node's goal is to provide
an easy way to build scalable network
programs”
Event-driven, not-blocking I/O model
(event-loops via callbacks de
javascript)
Todo se ejecuta en un único thread.
introducción
MWS nodejs
JavaScript’s single threaded
var http = require("http");
var port = parseInt(process.argv[2]);
http.createServer(function(request, response) {
console.log("Request for: " + request.url);
response.writeHead(200);
response.end("hello worldn");
}).listen(port);
Se ejecuta igual con 1 núcleo que con 1000
Para utilizar todos los núcleos disponibles; módulo cluster
que permite crear una “red” de procesos que comparten
puerto.
¿Cómo se distribuyen las conexiones entrantes?
https://nodejs.org/api/cluster.html#cluster_cluster_sched
ulingpolicy
Scaling Node.js
MWS nginx
l
var cluster = require("cluster");
l
var http = require("http");
var numCPUs = require("os").cpus().length;
var port = parseInt(process.argv[2]);
if (cluster.isMaster) {
for (var i = 0; i < numCPUs; i++) {
cluster.fork();
}
cluster.on("exit", function(worker, code, signal) {
cluster.fork();
});
} else {
http.createServer(function(request, response) {
console.log("Request for: " + request.url);
response.writeHead(200);
response.end("hello worldn");
}).listen(port);
}
scaling Node.js
MWS nginx
Módulo http-proxy
var proxyServer = require('http-proxy');
var port = parseInt(process.argv[2]);
var servers = [
{
host: "localhost",
port: 8081
},
{
host: "localhost",
port: 8080
}
];
proxyServer.createServer(function (req, res, proxy) {
var target = servers.shift();
proxy.proxyRequest(req, res, target);
servers.push(target);
}).listen(port);
Scaling node.js multiserver

Más contenido relacionado

La actualidad más candente

Servidores web de altas prestaciones. Tema 2
Servidores web de altas prestaciones. Tema 2Servidores web de altas prestaciones. Tema 2
Servidores web de altas prestaciones. Tema 2pacvslideshare
 
Webinar –Conectar servidores dedicados con Servidores Cloud
Webinar –Conectar servidores dedicados con Servidores CloudWebinar –Conectar servidores dedicados con Servidores Cloud
Webinar –Conectar servidores dedicados con Servidores CloudArsys
 
Servidores web de altas prestaciones. Tema 0. Presentación
Servidores web de altas prestaciones. Tema 0. PresentaciónServidores web de altas prestaciones. Tema 0. Presentación
Servidores web de altas prestaciones. Tema 0. Presentaciónpacvslideshare
 
Presentacion instaladores os debian centos
Presentacion instaladores os debian centosPresentacion instaladores os debian centos
Presentacion instaladores os debian centosOpenStack-VE
 
Alta Disponibilidad con SQL Server 2012
Alta Disponibilidad con SQL Server 2012Alta Disponibilidad con SQL Server 2012
Alta Disponibilidad con SQL Server 2012dbLearner
 
Tools for High Availability
Tools for High AvailabilityTools for High Availability
Tools for High AvailabilityLuis Toscano
 
Introducción a NodeJS
Introducción a NodeJSIntroducción a NodeJS
Introducción a NodeJSAlberto Gimeno
 
Webinar –Desplegar Hypervisores en servidores dedicados
Webinar –Desplegar Hypervisores en servidores dedicadosWebinar –Desplegar Hypervisores en servidores dedicados
Webinar –Desplegar Hypervisores en servidores dedicadosArsys
 
Recuperación de desastres y soluciones de alta disponibilidad con SQL Server
Recuperación de desastres y soluciones de alta disponibilidad con SQL ServerRecuperación de desastres y soluciones de alta disponibilidad con SQL Server
Recuperación de desastres y soluciones de alta disponibilidad con SQL ServerSpanishPASSVC
 
Filtrado der contenido web con GNU/Linux y Squid
Filtrado der contenido web con GNU/Linux y SquidFiltrado der contenido web con GNU/Linux y Squid
Filtrado der contenido web con GNU/Linux y SquidJorge Medina
 
Alta disponibilidad SQL Server 2012
Alta disponibilidad SQL Server 2012Alta disponibilidad SQL Server 2012
Alta disponibilidad SQL Server 2012Eduardo Castro
 
SQL Server Alta disponibilidad en ambientes empresariales
SQL Server Alta disponibilidad en ambientes empresarialesSQL Server Alta disponibilidad en ambientes empresariales
SQL Server Alta disponibilidad en ambientes empresarialesEduardo Castro
 
Cómo aumentar la disponibilidad y el rendimiento utilizando sql server 2012 w...
Cómo aumentar la disponibilidad y el rendimiento utilizando sql server 2012 w...Cómo aumentar la disponibilidad y el rendimiento utilizando sql server 2012 w...
Cómo aumentar la disponibilidad y el rendimiento utilizando sql server 2012 w...Eduardo Castro
 
Estableciendo escenarios de Alta Disponibilidad en las empresas de hoy con MS...
Estableciendo escenarios de Alta Disponibilidad en las empresas de hoy con MS...Estableciendo escenarios de Alta Disponibilidad en las empresas de hoy con MS...
Estableciendo escenarios de Alta Disponibilidad en las empresas de hoy con MS...Joseph Lopez
 
Taller HA y Balanceo de Cargas con NIGX.
Taller HA y Balanceo de Cargas con NIGX.Taller HA y Balanceo de Cargas con NIGX.
Taller HA y Balanceo de Cargas con NIGX.Luis Toscano
 
Webinar: Base de Datos en tiempo real con MeteorJS
Webinar: Base de Datos en tiempo real con MeteorJSWebinar: Base de Datos en tiempo real con MeteorJS
Webinar: Base de Datos en tiempo real con MeteorJSArsys
 
Desarrollo de Aplicaciones con Node.js | INTERSYS UNPRG | 2012
Desarrollo de Aplicaciones con Node.js | INTERSYS UNPRG | 2012Desarrollo de Aplicaciones con Node.js | INTERSYS UNPRG | 2012
Desarrollo de Aplicaciones con Node.js | INTERSYS UNPRG | 2012Pilmee Gates
 

La actualidad más candente (20)

Servidores web de altas prestaciones. Tema 2
Servidores web de altas prestaciones. Tema 2Servidores web de altas prestaciones. Tema 2
Servidores web de altas prestaciones. Tema 2
 
Webinar –Conectar servidores dedicados con Servidores Cloud
Webinar –Conectar servidores dedicados con Servidores CloudWebinar –Conectar servidores dedicados con Servidores Cloud
Webinar –Conectar servidores dedicados con Servidores Cloud
 
Servidores web de altas prestaciones. Tema 0. Presentación
Servidores web de altas prestaciones. Tema 0. PresentaciónServidores web de altas prestaciones. Tema 0. Presentación
Servidores web de altas prestaciones. Tema 0. Presentación
 
Presentacion instaladores os debian centos
Presentacion instaladores os debian centosPresentacion instaladores os debian centos
Presentacion instaladores os debian centos
 
Nodejs
NodejsNodejs
Nodejs
 
Alta Disponibilidad con SQL Server 2012
Alta Disponibilidad con SQL Server 2012Alta Disponibilidad con SQL Server 2012
Alta Disponibilidad con SQL Server 2012
 
Tools for High Availability
Tools for High AvailabilityTools for High Availability
Tools for High Availability
 
Introducción a NodeJS
Introducción a NodeJSIntroducción a NodeJS
Introducción a NodeJS
 
Introducción a Node.js
Introducción a Node.jsIntroducción a Node.js
Introducción a Node.js
 
Webinar –Desplegar Hypervisores en servidores dedicados
Webinar –Desplegar Hypervisores en servidores dedicadosWebinar –Desplegar Hypervisores en servidores dedicados
Webinar –Desplegar Hypervisores en servidores dedicados
 
Apache Server vs Nginx
Apache Server vs NginxApache Server vs Nginx
Apache Server vs Nginx
 
Recuperación de desastres y soluciones de alta disponibilidad con SQL Server
Recuperación de desastres y soluciones de alta disponibilidad con SQL ServerRecuperación de desastres y soluciones de alta disponibilidad con SQL Server
Recuperación de desastres y soluciones de alta disponibilidad con SQL Server
 
Filtrado der contenido web con GNU/Linux y Squid
Filtrado der contenido web con GNU/Linux y SquidFiltrado der contenido web con GNU/Linux y Squid
Filtrado der contenido web con GNU/Linux y Squid
 
Alta disponibilidad SQL Server 2012
Alta disponibilidad SQL Server 2012Alta disponibilidad SQL Server 2012
Alta disponibilidad SQL Server 2012
 
SQL Server Alta disponibilidad en ambientes empresariales
SQL Server Alta disponibilidad en ambientes empresarialesSQL Server Alta disponibilidad en ambientes empresariales
SQL Server Alta disponibilidad en ambientes empresariales
 
Cómo aumentar la disponibilidad y el rendimiento utilizando sql server 2012 w...
Cómo aumentar la disponibilidad y el rendimiento utilizando sql server 2012 w...Cómo aumentar la disponibilidad y el rendimiento utilizando sql server 2012 w...
Cómo aumentar la disponibilidad y el rendimiento utilizando sql server 2012 w...
 
Estableciendo escenarios de Alta Disponibilidad en las empresas de hoy con MS...
Estableciendo escenarios de Alta Disponibilidad en las empresas de hoy con MS...Estableciendo escenarios de Alta Disponibilidad en las empresas de hoy con MS...
Estableciendo escenarios de Alta Disponibilidad en las empresas de hoy con MS...
 
Taller HA y Balanceo de Cargas con NIGX.
Taller HA y Balanceo de Cargas con NIGX.Taller HA y Balanceo de Cargas con NIGX.
Taller HA y Balanceo de Cargas con NIGX.
 
Webinar: Base de Datos en tiempo real con MeteorJS
Webinar: Base de Datos en tiempo real con MeteorJSWebinar: Base de Datos en tiempo real con MeteorJS
Webinar: Base de Datos en tiempo real con MeteorJS
 
Desarrollo de Aplicaciones con Node.js | INTERSYS UNPRG | 2012
Desarrollo de Aplicaciones con Node.js | INTERSYS UNPRG | 2012Desarrollo de Aplicaciones con Node.js | INTERSYS UNPRG | 2012
Desarrollo de Aplicaciones con Node.js | INTERSYS UNPRG | 2012
 

Similar a Aspectos nodejs

24. Introducción a Node JS.pdf
24. Introducción a Node JS.pdf24. Introducción a Node JS.pdf
24. Introducción a Node JS.pdfmabytax
 
Introduccion a Nodejs
Introduccion a NodejsIntroduccion a Nodejs
Introduccion a NodejsJan Sanchez
 
Node on Windows jsconf arg 2012
Node on Windows jsconf arg 2012Node on Windows jsconf arg 2012
Node on Windows jsconf arg 2012Matias Woloski
 
Introducción a NodeJS
Introducción a NodeJSIntroducción a NodeJS
Introducción a NodeJSBEEVA_es
 
Node.js - un poco de informacion.
Node.js - un poco de informacion.Node.js - un poco de informacion.
Node.js - un poco de informacion.Luis Toscano
 
Codemotion 2017: Pentesting en aplicaciones node.js AS ALWAYS: FOR FUN AND PR...
Codemotion 2017: Pentesting en aplicaciones node.js AS ALWAYS: FOR FUN AND PR...Codemotion 2017: Pentesting en aplicaciones node.js AS ALWAYS: FOR FUN AND PR...
Codemotion 2017: Pentesting en aplicaciones node.js AS ALWAYS: FOR FUN AND PR...Dani Adastra
 
Presentación OpenStack Comunidad Venezuela
Presentación OpenStack Comunidad VenezuelaPresentación OpenStack Comunidad Venezuela
Presentación OpenStack Comunidad VenezuelaEnder Mujica Diaz
 
Funcionamiento con my sql
Funcionamiento con my sqlFuncionamiento con my sql
Funcionamiento con my sqldante123456
 
NodeJS y MongoDB
NodeJS y MongoDBNodeJS y MongoDB
NodeJS y MongoDBArsys
 
dockerize.it
dockerize.itdockerize.it
dockerize.itbetabeers
 
Qué es exactamente un sistema cluster
Qué es exactamente un sistema clusterQué es exactamente un sistema cluster
Qué es exactamente un sistema clusterJuan Manuel Torres
 
Rompiendo paradigmas
Rompiendo paradigmasRompiendo paradigmas
Rompiendo paradigmasZuriel Diaz
 
[ES] Introducción a las Aplicaciones Web con Java
[ES] Introducción a las Aplicaciones Web con Java[ES] Introducción a las Aplicaciones Web con Java
[ES] Introducción a las Aplicaciones Web con JavaEudris Cabrera
 
Docker orientado al desarrollo de aplicaciones con NodeJS
Docker orientado al desarrollo de aplicaciones con NodeJSDocker orientado al desarrollo de aplicaciones con NodeJS
Docker orientado al desarrollo de aplicaciones con NodeJSJan Sanchez
 
Plataforma de programación Java
Plataforma de programación JavaPlataforma de programación Java
Plataforma de programación JavaAntonio Contreras
 

Similar a Aspectos nodejs (20)

24. Introducción a Node JS.pdf
24. Introducción a Node JS.pdf24. Introducción a Node JS.pdf
24. Introducción a Node JS.pdf
 
Introduccion a Node.js
Introduccion a Node.jsIntroduccion a Node.js
Introduccion a Node.js
 
Introduccion a Nodejs
Introduccion a NodejsIntroduccion a Nodejs
Introduccion a Nodejs
 
Node on Windows jsconf arg 2012
Node on Windows jsconf arg 2012Node on Windows jsconf arg 2012
Node on Windows jsconf arg 2012
 
Introducción a NodeJS
Introducción a NodeJSIntroducción a NodeJS
Introducción a NodeJS
 
Node.js - un poco de informacion.
Node.js - un poco de informacion.Node.js - un poco de informacion.
Node.js - un poco de informacion.
 
Codemotion 2017: Pentesting en aplicaciones node.js AS ALWAYS: FOR FUN AND PR...
Codemotion 2017: Pentesting en aplicaciones node.js AS ALWAYS: FOR FUN AND PR...Codemotion 2017: Pentesting en aplicaciones node.js AS ALWAYS: FOR FUN AND PR...
Codemotion 2017: Pentesting en aplicaciones node.js AS ALWAYS: FOR FUN AND PR...
 
Tecnologias emergentes node js
Tecnologias emergentes node jsTecnologias emergentes node js
Tecnologias emergentes node js
 
Presentación OpenStack Comunidad Venezuela
Presentación OpenStack Comunidad VenezuelaPresentación OpenStack Comunidad Venezuela
Presentación OpenStack Comunidad Venezuela
 
Funcionamiento con my sql
Funcionamiento con my sqlFuncionamiento con my sql
Funcionamiento con my sql
 
NodeJS y MongoDB
NodeJS y MongoDBNodeJS y MongoDB
NodeJS y MongoDB
 
Introducción a Node.js
Introducción a Node.jsIntroducción a Node.js
Introducción a Node.js
 
dockerize.it
dockerize.itdockerize.it
dockerize.it
 
Introducción a Asp.Net Mvc
Introducción a Asp.Net MvcIntroducción a Asp.Net Mvc
Introducción a Asp.Net Mvc
 
Qué es exactamente un sistema cluster
Qué es exactamente un sistema clusterQué es exactamente un sistema cluster
Qué es exactamente un sistema cluster
 
Rompiendo paradigmas
Rompiendo paradigmasRompiendo paradigmas
Rompiendo paradigmas
 
[ES] Introducción a las Aplicaciones Web con Java
[ES] Introducción a las Aplicaciones Web con Java[ES] Introducción a las Aplicaciones Web con Java
[ES] Introducción a las Aplicaciones Web con Java
 
Docker orientado al desarrollo de aplicaciones con NodeJS
Docker orientado al desarrollo de aplicaciones con NodeJSDocker orientado al desarrollo de aplicaciones con NodeJS
Docker orientado al desarrollo de aplicaciones con NodeJS
 
Plataforma de programación Java
Plataforma de programación JavaPlataforma de programación Java
Plataforma de programación Java
 
Aprendiendo GWT
Aprendiendo GWTAprendiendo GWT
Aprendiendo GWT
 

Más de Juan Antonio Gil Martínez-Abarca (11)

03 asor gestión de usuarios y ldap
03 asor   gestión de usuarios y ldap03 asor   gestión de usuarios y ldap
03 asor gestión de usuarios y ldap
 
06 airc firewalls
06 airc   firewalls06 airc   firewalls
06 airc firewalls
 
08 airc hackingbuscadores - mod
08 airc   hackingbuscadores - mod08 airc   hackingbuscadores - mod
08 airc hackingbuscadores - mod
 
Aisi 1415 06 correo
Aisi 1415 06 correoAisi 1415 06 correo
Aisi 1415 06 correo
 
05 airc dns
05 airc   dns05 airc   dns
05 airc dns
 
04 girc servicio dhcp
04 girc   servicio dhcp 04 girc   servicio dhcp
04 girc servicio dhcp
 
Snortpracticas 2006
Snortpracticas 2006Snortpracticas 2006
Snortpracticas 2006
 
Snort 2006
Snort 2006Snort 2006
Snort 2006
 
Tripwire 2006
Tripwire 2006Tripwire 2006
Tripwire 2006
 
Honeypotsprácticas2006
Honeypotsprácticas2006Honeypotsprácticas2006
Honeypotsprácticas2006
 
Honeypots2006 2007
Honeypots2006 2007Honeypots2006 2007
Honeypots2006 2007
 

Último

Prueba Objetiva del Parcial 1_Grupo 1...
Prueba Objetiva del Parcial 1_Grupo 1...Prueba Objetiva del Parcial 1_Grupo 1...
Prueba Objetiva del Parcial 1_Grupo 1...DannyErazo5
 
Práctica 2. Aplicación de la herramienta Formularios de Google (4).pdf
Práctica 2. Aplicación de la herramienta Formularios de Google (4).pdfPráctica 2. Aplicación de la herramienta Formularios de Google (4).pdf
Práctica 2. Aplicación de la herramienta Formularios de Google (4).pdfFernandoCalapaqui
 
Tarea 4. Ensayo sobre "Plagio académico"
Tarea 4. Ensayo sobre "Plagio académico"Tarea 4. Ensayo sobre "Plagio académico"
Tarea 4. Ensayo sobre "Plagio académico"FernandoCalapaqui
 
DIAPOSITIVAS RIESGO TRÁMITES ONLINE .pptx
DIAPOSITIVAS RIESGO TRÁMITES ONLINE .pptxDIAPOSITIVAS RIESGO TRÁMITES ONLINE .pptx
DIAPOSITIVAS RIESGO TRÁMITES ONLINE .pptxivelezutrera
 
Detalles Constructivos Puertas y anclaje.pptx
Detalles Constructivos Puertas y anclaje.pptxDetalles Constructivos Puertas y anclaje.pptx
Detalles Constructivos Puertas y anclaje.pptxLuisChili1
 
Práctica 1. Aplicación de la herramienta Padlet
Práctica 1. Aplicación de la herramienta PadletPráctica 1. Aplicación de la herramienta Padlet
Práctica 1. Aplicación de la herramienta PadletFernandoCalapaqui
 
Práctica 1. Aplicación de la herramienta Padlet
Práctica 1. Aplicación de la herramienta PadletPráctica 1. Aplicación de la herramienta Padlet
Práctica 1. Aplicación de la herramienta PadletDannyErazo5
 
Práctica 1. Pasaporte de identificación.
Práctica 1. Pasaporte de identificación.Práctica 1. Pasaporte de identificación.
Práctica 1. Pasaporte de identificación.FernandoCalapaqui
 
Cherubini Meta Z-Wave Smart Plug Manual A510068
Cherubini Meta Z-Wave Smart Plug Manual A510068Cherubini Meta Z-Wave Smart Plug Manual A510068
Cherubini Meta Z-Wave Smart Plug Manual A510068Domotica daVinci
 
Ejercicios de búsqueda eficaz. Navegadores
Ejercicios de búsqueda eficaz. NavegadoresEjercicios de búsqueda eficaz. Navegadores
Ejercicios de búsqueda eficaz. NavegadoresDannyErazo5
 
Breve Resumen Modelos Evaluación REDs e Instrumentos
Breve Resumen Modelos Evaluación REDs e InstrumentosBreve Resumen Modelos Evaluación REDs e Instrumentos
Breve Resumen Modelos Evaluación REDs e Instrumentosdarkcrow08
 
Aplicación de la herramienta Formularios de Google
Aplicación de la herramienta Formularios de GoogleAplicación de la herramienta Formularios de Google
Aplicación de la herramienta Formularios de GoogleDannyErazo5
 
Práctica 4. Ejercicios de búsqueda eficaz(2).pdf
Práctica 4. Ejercicios de búsqueda eficaz(2).pdfPráctica 4. Ejercicios de búsqueda eficaz(2).pdf
Práctica 4. Ejercicios de búsqueda eficaz(2).pdfFernandoCalapaqui
 
Redes informáticas, descripción general, tipos, medios de transmisión
Redes informáticas, descripción general, tipos, medios de transmisiónRedes informáticas, descripción general, tipos, medios de transmisión
Redes informáticas, descripción general, tipos, medios de transmisiónborroedgardog
 
Documento del proyecto final............
Documento del proyecto final............Documento del proyecto final............
Documento del proyecto final............DannyErazo5
 
Cherubini Meta Z-Wave Double Switch A510083-84-90
Cherubini Meta Z-Wave Double Switch A510083-84-90Cherubini Meta Z-Wave Double Switch A510083-84-90
Cherubini Meta Z-Wave Double Switch A510083-84-90Domotica daVinci
 
Diapositiva_Aprendizaje-basado-en-problemas.pdf
Diapositiva_Aprendizaje-basado-en-problemas.pdfDiapositiva_Aprendizaje-basado-en-problemas.pdf
Diapositiva_Aprendizaje-basado-en-problemas.pdfDannyErazo5
 
DIAPOSITIVASTRÁMITESONLINEFORMACION.pptx
DIAPOSITIVASTRÁMITESONLINEFORMACION.pptxDIAPOSITIVASTRÁMITESONLINEFORMACION.pptx
DIAPOSITIVASTRÁMITESONLINEFORMACION.pptxivelezutrera
 
Plan_de_Clases..........................
Plan_de_Clases..........................Plan_de_Clases..........................
Plan_de_Clases..........................DannyErazo5
 
Desarrollo de Interfaces 2t Desarrollo Aplicaciones Móvilles
Desarrollo de Interfaces 2t Desarrollo Aplicaciones MóvillesDesarrollo de Interfaces 2t Desarrollo Aplicaciones Móvilles
Desarrollo de Interfaces 2t Desarrollo Aplicaciones MóvillesMaricarmen Sánchez Ruiz
 

Último (20)

Prueba Objetiva del Parcial 1_Grupo 1...
Prueba Objetiva del Parcial 1_Grupo 1...Prueba Objetiva del Parcial 1_Grupo 1...
Prueba Objetiva del Parcial 1_Grupo 1...
 
Práctica 2. Aplicación de la herramienta Formularios de Google (4).pdf
Práctica 2. Aplicación de la herramienta Formularios de Google (4).pdfPráctica 2. Aplicación de la herramienta Formularios de Google (4).pdf
Práctica 2. Aplicación de la herramienta Formularios de Google (4).pdf
 
Tarea 4. Ensayo sobre "Plagio académico"
Tarea 4. Ensayo sobre "Plagio académico"Tarea 4. Ensayo sobre "Plagio académico"
Tarea 4. Ensayo sobre "Plagio académico"
 
DIAPOSITIVAS RIESGO TRÁMITES ONLINE .pptx
DIAPOSITIVAS RIESGO TRÁMITES ONLINE .pptxDIAPOSITIVAS RIESGO TRÁMITES ONLINE .pptx
DIAPOSITIVAS RIESGO TRÁMITES ONLINE .pptx
 
Detalles Constructivos Puertas y anclaje.pptx
Detalles Constructivos Puertas y anclaje.pptxDetalles Constructivos Puertas y anclaje.pptx
Detalles Constructivos Puertas y anclaje.pptx
 
Práctica 1. Aplicación de la herramienta Padlet
Práctica 1. Aplicación de la herramienta PadletPráctica 1. Aplicación de la herramienta Padlet
Práctica 1. Aplicación de la herramienta Padlet
 
Práctica 1. Aplicación de la herramienta Padlet
Práctica 1. Aplicación de la herramienta PadletPráctica 1. Aplicación de la herramienta Padlet
Práctica 1. Aplicación de la herramienta Padlet
 
Práctica 1. Pasaporte de identificación.
Práctica 1. Pasaporte de identificación.Práctica 1. Pasaporte de identificación.
Práctica 1. Pasaporte de identificación.
 
Cherubini Meta Z-Wave Smart Plug Manual A510068
Cherubini Meta Z-Wave Smart Plug Manual A510068Cherubini Meta Z-Wave Smart Plug Manual A510068
Cherubini Meta Z-Wave Smart Plug Manual A510068
 
Ejercicios de búsqueda eficaz. Navegadores
Ejercicios de búsqueda eficaz. NavegadoresEjercicios de búsqueda eficaz. Navegadores
Ejercicios de búsqueda eficaz. Navegadores
 
Breve Resumen Modelos Evaluación REDs e Instrumentos
Breve Resumen Modelos Evaluación REDs e InstrumentosBreve Resumen Modelos Evaluación REDs e Instrumentos
Breve Resumen Modelos Evaluación REDs e Instrumentos
 
Aplicación de la herramienta Formularios de Google
Aplicación de la herramienta Formularios de GoogleAplicación de la herramienta Formularios de Google
Aplicación de la herramienta Formularios de Google
 
Práctica 4. Ejercicios de búsqueda eficaz(2).pdf
Práctica 4. Ejercicios de búsqueda eficaz(2).pdfPráctica 4. Ejercicios de búsqueda eficaz(2).pdf
Práctica 4. Ejercicios de búsqueda eficaz(2).pdf
 
Redes informáticas, descripción general, tipos, medios de transmisión
Redes informáticas, descripción general, tipos, medios de transmisiónRedes informáticas, descripción general, tipos, medios de transmisión
Redes informáticas, descripción general, tipos, medios de transmisión
 
Documento del proyecto final............
Documento del proyecto final............Documento del proyecto final............
Documento del proyecto final............
 
Cherubini Meta Z-Wave Double Switch A510083-84-90
Cherubini Meta Z-Wave Double Switch A510083-84-90Cherubini Meta Z-Wave Double Switch A510083-84-90
Cherubini Meta Z-Wave Double Switch A510083-84-90
 
Diapositiva_Aprendizaje-basado-en-problemas.pdf
Diapositiva_Aprendizaje-basado-en-problemas.pdfDiapositiva_Aprendizaje-basado-en-problemas.pdf
Diapositiva_Aprendizaje-basado-en-problemas.pdf
 
DIAPOSITIVASTRÁMITESONLINEFORMACION.pptx
DIAPOSITIVASTRÁMITESONLINEFORMACION.pptxDIAPOSITIVASTRÁMITESONLINEFORMACION.pptx
DIAPOSITIVASTRÁMITESONLINEFORMACION.pptx
 
Plan_de_Clases..........................
Plan_de_Clases..........................Plan_de_Clases..........................
Plan_de_Clases..........................
 
Desarrollo de Interfaces 2t Desarrollo Aplicaciones Móvilles
Desarrollo de Interfaces 2t Desarrollo Aplicaciones MóvillesDesarrollo de Interfaces 2t Desarrollo Aplicaciones Móvilles
Desarrollo de Interfaces 2t Desarrollo Aplicaciones Móvilles
 

Aspectos nodejs

  • 3. MWS nodejs Open Source Server side javascript V8: Javascript desarrollado por Google Nodejs.org: “Node's goal is to provide an easy way to build scalable network programs” Event-driven, not-blocking I/O model (event-loops via callbacks de javascript) Todo se ejecuta en un único thread. introducción
  • 4. MWS nodejs JavaScript’s single threaded var http = require("http"); var port = parseInt(process.argv[2]); http.createServer(function(request, response) { console.log("Request for: " + request.url); response.writeHead(200); response.end("hello worldn"); }).listen(port); Se ejecuta igual con 1 núcleo que con 1000 Para utilizar todos los núcleos disponibles; módulo cluster que permite crear una “red” de procesos que comparten puerto. ¿Cómo se distribuyen las conexiones entrantes? https://nodejs.org/api/cluster.html#cluster_cluster_sched ulingpolicy Scaling Node.js
  • 5. MWS nginx l var cluster = require("cluster"); l var http = require("http"); var numCPUs = require("os").cpus().length; var port = parseInt(process.argv[2]); if (cluster.isMaster) { for (var i = 0; i < numCPUs; i++) { cluster.fork(); } cluster.on("exit", function(worker, code, signal) { cluster.fork(); }); } else { http.createServer(function(request, response) { console.log("Request for: " + request.url); response.writeHead(200); response.end("hello worldn"); }).listen(port); } scaling Node.js
  • 6. MWS nginx Módulo http-proxy var proxyServer = require('http-proxy'); var port = parseInt(process.argv[2]); var servers = [ { host: "localhost", port: 8081 }, { host: "localhost", port: 8080 } ]; proxyServer.createServer(function (req, res, proxy) { var target = servers.shift(); proxy.proxyRequest(req, res, target); servers.push(target); }).listen(port); Scaling node.js multiserver
  • 7. MWS nodejs “If #nginx isn’t sitting in front of your node server, you’re probably doing it wrong.” —Bryan Hughes on Twitter https://www.nginx.com/blog/5-performance-tips-for- node-js-applications/ l Node.js is a great tool for creating and running application logic that produces the core, variable content for your web page l It’s not so great for serving static content – images and JavaScript files, for example – or load balancing across multiple servers. l Node.js has a few weak points and vulnerabilities that can make Node.js based systems prone to‑ underperformance or even crashes. Problems arise more frequently when a Node.js based web application‑ experiences rapid traffic growth. Nodejs: ¿solo o acompañado?
  • 8. MWS nodejs Razones para usar Node.js con otro servidor al frente: l Los permisos privilegiados para el “otro” l Servidor contenido estático como imágenes, css, js, html,... Aunque el rendimiento de Nodejs es bueno, no es normalmente mejor que Nginx (por ejemplo) l No encargarnos de control de caché, eTags, puede recaer en el “otro” servidor web (aunque existe “ayuda” en ciertos frameworks) Si tenemos un CDN, entonces da igual l Implementar SSL/TLS y/o HTTP/2 con el cliente, liberando a node l Tienes a otro que controle y avise de errores en node.js, de lo contrario no se enteran hasta el timeout l Otro servidor puede ayudar para mitigar problemas de seguridad y DoS a nodejs (Ej: CVE-2013-4450 se previene con Nginx delante de nodejs) l Nota: Con websockets, si se usa nginx, que sea una versión reciente(>= 1.3.13) Nodejs: ¿solo o acompañado?
  • 9. MWS nodejs HTTP es un protocolo excelente para aplicaciones basadas en petición-respuesta y mecanismos pull (el cliente pide) ¿Qué pasa con apps web con interactividad (push, pull/push), full-duplex, intereacción basada en mensajes entre cliente y servidor? Websocket proporciona una forma fácil de construir apps de tiempo real, dirigidas por eventos que utilice push, pull, o “streaming communications”) Ej: juegos online, chats, webRTC, stock tracking e informes de tiempo real de resultados deportivos https://www.nginx.com/blog/realtime- websocket
  • 10. MWS nodejs PROFESSIONAL NODE.JS, Pedro Teixeira, John Wiley & Sons, Inc, 2013 Referencias

Notas del editor

  1. Apache inicia varios subprocesos y cada petición es atendida por uno de estos; cuando termina con esta petición este subproceso podría atender a otro cliente o ser terminado, según al valor de MaxRequestsPerChild. Es el modo más estable, ya que un error crítico solo afectaría a una petición. Este es el único modo en que se pueden usar módulos / extensiones que no sean Thread-Safe. Requiere más recursos (Memoria RAM y CPU) para atender cierto número de peticiones simultaneas, respecto a otras configuraciones. Esto limita drásticamente la escabilidad del servidor. Favorece el uso intensivo de PHP. Los aceleradores de PHP no son Thread-Safe, pero al usarlos junto a Prefork podemos justificar el mayor uso de php (o páginas sin ningún tipo de caché, aparte del acelerador en sí). Prefork es la configuración predeterminada en la mayoría de instalaciones.
  2. Apache inicia varios subprocesos y cada petición es atendida por uno de estos; cuando termina con esta petición este subproceso podría atender a otro cliente o ser terminado, según al valor de MaxRequestsPerChild. Es el modo más estable, ya que un error crítico solo afectaría a una petición. Este es el único modo en que se pueden usar módulos / extensiones que no sean Thread-Safe. Requiere más recursos (Memoria RAM y CPU) para atender cierto número de peticiones simultaneas, respecto a otras configuraciones. Esto limita drásticamente la escabilidad del servidor. Favorece el uso intensivo de PHP. Los aceleradores de PHP no son Thread-Safe, pero al usarlos junto a Prefork podemos justificar el mayor uso de php (o páginas sin ningún tipo de caché, aparte del acelerador en sí). Prefork es la configuración predeterminada en la mayoría de instalaciones.
  3. Apache inicia varios subprocesos y cada petición es atendida por uno de estos; cuando termina con esta petición este subproceso podría atender a otro cliente o ser terminado, según al valor de MaxRequestsPerChild. Es el modo más estable, ya que un error crítico solo afectaría a una petición. Este es el único modo en que se pueden usar módulos / extensiones que no sean Thread-Safe. Requiere más recursos (Memoria RAM y CPU) para atender cierto número de peticiones simultaneas, respecto a otras configuraciones. Esto limita drásticamente la escabilidad del servidor. Favorece el uso intensivo de PHP. Los aceleradores de PHP no son Thread-Safe, pero al usarlos junto a Prefork podemos justificar el mayor uso de php (o páginas sin ningún tipo de caché, aparte del acelerador en sí). Prefork es la configuración predeterminada en la mayoría de instalaciones.
  4. Apache inicia varios subprocesos y cada petición es atendida por uno de estos; cuando termina con esta petición este subproceso podría atender a otro cliente o ser terminado, según al valor de MaxRequestsPerChild. Es el modo más estable, ya que un error crítico solo afectaría a una petición. Este es el único modo en que se pueden usar módulos / extensiones que no sean Thread-Safe. Requiere más recursos (Memoria RAM y CPU) para atender cierto número de peticiones simultaneas, respecto a otras configuraciones. Esto limita drásticamente la escabilidad del servidor. Favorece el uso intensivo de PHP. Los aceleradores de PHP no son Thread-Safe, pero al usarlos junto a Prefork podemos justificar el mayor uso de php (o páginas sin ningún tipo de caché, aparte del acelerador en sí). Prefork es la configuración predeterminada en la mayoría de instalaciones.
  5. Apache inicia varios subprocesos y cada petición es atendida por uno de estos; cuando termina con esta petición este subproceso podría atender a otro cliente o ser terminado, según al valor de MaxRequestsPerChild. Es el modo más estable, ya que un error crítico solo afectaría a una petición. Este es el único modo en que se pueden usar módulos / extensiones que no sean Thread-Safe. Requiere más recursos (Memoria RAM y CPU) para atender cierto número de peticiones simultaneas, respecto a otras configuraciones. Esto limita drásticamente la escabilidad del servidor. Favorece el uso intensivo de PHP. Los aceleradores de PHP no son Thread-Safe, pero al usarlos junto a Prefork podemos justificar el mayor uso de php (o páginas sin ningún tipo de caché, aparte del acelerador en sí). Prefork es la configuración predeterminada en la mayoría de instalaciones.
  6. Apache inicia varios subprocesos y cada petición es atendida por uno de estos; cuando termina con esta petición este subproceso podría atender a otro cliente o ser terminado, según al valor de MaxRequestsPerChild. Es el modo más estable, ya que un error crítico solo afectaría a una petición. Este es el único modo en que se pueden usar módulos / extensiones que no sean Thread-Safe. Requiere más recursos (Memoria RAM y CPU) para atender cierto número de peticiones simultaneas, respecto a otras configuraciones. Esto limita drásticamente la escabilidad del servidor. Favorece el uso intensivo de PHP. Los aceleradores de PHP no son Thread-Safe, pero al usarlos junto a Prefork podemos justificar el mayor uso de php (o páginas sin ningún tipo de caché, aparte del acelerador en sí). Prefork es la configuración predeterminada en la mayoría de instalaciones.
  7. Wherever in your URL-space you do not have an Options FollowSymLinks, or you do have an Options SymLinksIfOwnerMatch, Apache will need to issue extra system calls to check up on symlinks. (One extra call per filename component.) For example, if you had: DocumentRoot &amp;quot;/www/htdocs&amp;quot; &amp;lt;Directory &amp;quot;/&amp;quot;&amp;gt; Options SymLinksIfOwnerMatch &amp;lt;/Directory&amp;gt; and a request is made for the URI /index.html, then Apache will perform lstat(2) on /www, /www/htdocs, and /www/htdocs/index.html. The results of these lstats are never cached, so they will occur on every single request. If you really desire the symlinks security checking, you can do something like this: DocumentRoot &amp;quot;/www/htdocs&amp;quot; &amp;lt;Directory &amp;quot;/&amp;quot;&amp;gt; Options FollowSymLinks &amp;lt;/Directory&amp;gt; &amp;lt;Directory &amp;quot;/www/htdocs&amp;quot;&amp;gt; Options -FollowSymLinks +SymLinksIfOwnerMatch &amp;lt;/Directory&amp;gt;