Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

Aspectos nodejs

238 vues

Publié le

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

Publié dans : Technologie
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aspectos nodejs

  1. 1. AISI Administración de Servidores Web: nodejs
  2. 2. MWS nodejs nodejs
  3. 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. 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. 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. 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. 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. 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. 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. 10. MWS nodejs PROFESSIONAL NODE.JS, Pedro Teixeira, John Wiley & Sons, Inc, 2013 Referencias

×