Sistemas Distribuidos Basados en la WEB Andrew Tanembaum M. L. Liu Buyya Dilleym Maggs, et all “Globally Distributed Content Delivery” Aplicaciones en Internet z z z La aplicación distribuida más conocida es la World Wide Web o la Web Se trata de un sistema distribuido de servidores HTTP y clientes WEB para acceder a documentos vinculados. La web nació gracias a Tim Berners-Lee a finales de 1990 en el CERN, el laboratorio Europeo de Física de partículas de Suiza. Aplicaciones en Internet z z La idea era permitir que un grupo numeroso de investigadores, dispersos geográficamente tuviera acceso a documentos compartidos. Vinculando los documentos entre sí, fue fácil integrarlos desde diferentes proyectos en un nuevo documento sin necesidad de realizar cambios centralizados. 1 Aplicaciones en la Internet z Actualmente, con la introducción de servicios se está viendo el surgimiento de un enorme sistema de distribución donde se están utilizando, componiendo y ofreciendo servicios a cualquier usuario o aplicación que sea capaz de utilizarlos. Arquitectura z z El WWW es una aplicación cliente/servidor basada en el protocolo HTTP (hypertext Transfer Protocol, Protocolo de Transferencia de Hipertexto) Un servidor WEB es un servidor orientado a conexión que implementa HTTP y que por defecto ejecuta en el puerto 80. Arquitectura z z La parte central de un sitio WEB está conformada por un proceso que tiene acceso a un sistema de archivos local que guarda documentos. El modo más simple de referirse a un documento es por medio de una referencia llamada localizador uniforme de recursos (URL). El URL especifica la localización del documento, a menudo incluye: el nombre DNS de su servidor junto con el nombre del archivo, mediante el cual el servidor puede buscar el documento en el sistema de archivos local. 2 Arquitectura z z z Un usuario ejecuta un cliente WWW (normalmente conocido como navegador) en una máquina local. Un navegador es responsable de desplegar adecuadamente los documentos solicitados por el cliente. También acepta entradas del usuario, en su mayor parte para permitirle seleccionar referencias a otros documentos, los cuales el navegador busca y despliega. Client machine Server machine Browser Web server 2. Server fetches document from local file OS 3. Response 1. Get document request (HTTP) Documentos Web - - Todo en la web llega en forma de documento. Un documento no sólo contiene texto simple, sino que puede poseer características dinámicas tales como: audio, video, animaciones, etc. En la mayoría de los casos se requieren de aplicaciones especiales para interpretar todos los componentes de un documento. Un documento tiene dos partes: la parte principal o plantilla y la información en sí. La parte principal se construye en un lenguaje de marcas. 3 HTML z z Hypertext Markup Language o Lenguaje de Marcado de hypertexto, es el lenguaje de etiquetado (tags) utilizado para crear documentos que pueden ser recuperados usando WWW. HTML permite insertar vínculos a otros documentos. Cuando se activan o se seleccionan estos vínculos, el documento requerido será solicitado al servidor. Ejemplo Código de HTML <html> <body> This is a paragraph. This is a paragraph. This is a paragraph <p>This is a paragraph.</p> <p>This is a paragraph.</p> <p>This is a paragraph.</p> </body> </html> Ejemplo Código de HTML <html> <body> z z This text is a link to a page on this Web site. This text is a link to a page on the World Wide Web. <p> <a href="lastpage.htm"> This text</a> is a link to a page on this Web site. </p> <p> <a href="http://www.microsoft.com/"> This text</a> is a link to a page on the World Wide Web. </p> </body> </html> 4 XML (lenguaje de marcado extensible) z z z z Mientras que HTML permite etiquetar un documento para la presentación posterior de la información, el XML permite estructurar su información. Utiliza etiquetas para describir la información o los elementos contenidos en el documento. HTML y XML incluyen toda clase de señalizaciones que se refieren a documentos embebidos (empotrados), es decir, referencias a archivos que deberán incluirse para que el documento esté completo. Un documento embebido puede ser un programa completo. Ejemplo XML <note> <to>Mary</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note> Ejemplo XML <breakfast_menu> <food> <name>Belgian Waffles</name> <price>$5.95</price> <description> two of our famous Belgian Waffles with plenty of real maple syrup </description> <calories>650</calories> </food> <food> <name>Strawberry Belgian Waffles</name> <price>$7.95</price> <description> light Belgian waffles covered with strawberries and whipped cream </description> <calories>900</calories> </food> </breakfast_menu> 5 MIME z z z Los documentos insertados pueden ser de varios tipos. Cómo se pueden equipar los navegadores para manejar los diferentes tipos de formatos de archivos y las maneras de interpretarlos? Se requieren dos cosas: z z Una forma de especificar el tipo de documento embebido Un modo de permitir que el navegador maneje tipos de datos específicos. MIME z Cada documento insertado lleva un tipo MIME (multipurpose Internet Mail Interchange) asociado. Tipo Subtipo text Plain rich text, html, xml, etc. message E-mail, news application Octect-stream (puede usarse para enviar archivosJava.class) Adobe-postcript, xml, pdf image Jpeg, gif audio Basic, midi, mp3 Vídeo Mpeg, quicktime Documentos WEB z z z El tipo de documento se representa en la forma de una combinación tipo/subtipo, ejem: aplicación/pdf. En algunos casos se espera que se utilicen aplicaciones distintas para procesar los diferentes tipos de documentos. Esta aplicación la proporciona el servidor, puede ser un programa aparte que funcionará del lado del navegador o un plug-in (componente de software adicional) que puede instalarse como parte del navegador. 6 Documentos WEB z Esta variedad cambiante de tipos de documentos obliga a que los navegadores sean extensibles. Con este objeto se ha llevado a cabo cierta estandarización para permitir que los plug-in se inserten fácilmente dentro del navegador. Contenido WEB generado en forma dinámica: Arquitectura de Varios Niveles z z Al principio la web se utilizaba para transmitir contenido estático: un archivo plano, un archivo con una imagen. Según fue evolucionando, las aplicaciones comenzaron a utilizar http con diferentes propósitos: z El navegador puede ejecutar un programa (consultar a una BD) tomando los datos de un usuario como entrada. Contenido WEB generado en forma dinámica z z z Una de las primeras mejoras de la arquitectura básica fue la de soportar la interacción de un usuario por medio de la interfaz de compuerta común (Common Gateway Interface) CGI define la forma estándar mediante la cual un servidor WEB es capaz de ejecutar un programa (script cgi) tomando los datos de un usuario como entrada. En general los datos del usuario provienen de un formulario html; este formulario especifica el programa a ser ejecutado del lado del servidor, junto con los valores de los parámetros. 7 Contenido WEB generado en forma dinámica z Cuando el servidor procesa la solicitud, inicia el programa nombrado en la solicitud y transfiere los valores de los parámetros. El programa realiza su trabajo y, por lo general, regresa los resultados en la forma de un documento que podrá desplegar el navegador donde se encuentra el usuario. script cgi servidor http cliente web petición de hola.html contenido de hola.html petición de hola.cgi datos, del cliente respuesta del servidor incluyendo páginas generadas automáticamente. 2. Start process to fetch document 1. Get request 5. Return result HTTP request handler CGI program 3. Database interaction 4. HTML document created Web server CGI process Database server 8 CGI z z Un script CGI puede estar escrito en cualquier lenguaje de programación, incluyendo los lenguajes interpretados (perl, TKL, Python, JavaScript, Visual Basic Script), al igual que lenguajes compilados (C, C++, Ada) Un script cgi se invoca normalmente desde una página web especial, conocida como formulario. El formulario web z Es un tipo especial de página web que: z z Proporciona una interfaz gráfica que le permite al usuario introducir datos. Cuando el usuario presiona el botón de envío, invoca la ejecución de un programa externo en la máquina del servidor web. Arquitectura: 3 Niveles z z Como el procesamiento del lado del servidor WEB cada vez requiere de más flexibilidad, no es sorprendente que ahora muchos sitios web estén organizados como una arquitectura de 3 niveles: servidor web, un servidor de aplicaciones y una BD. Servidor de aplicaciones: ejecuta toda clase de programas que pueden o no acceder al tercer nivel, que se compone por una BD. 9 Arquitectura: 3 Niveles z Aunque desde el punto de vista arquitectónico tiene sentido distinguir los tres niveles, se pueden presentar problemas de desempeño. El servidor de aplicaciones y la BD son potenciales cuellos de botella. Sesiones web y datos de estado de la sesión z z Durante una sesión de una aplicación web, se emiten diversas peticiones HTTP, cada una de las cuales puede invocar a un programa externo como puede ser un script cgi. Varios de los scripts invocados, pueden necesitar los mismos datos (ejm, el identificador del usuario). Es decir hay datos que necesitan ser compartidos por los scripts a lo largo de la sesión. Sesiones web y datos de estado de la sesión z z Sin embargo, debido a que los scripts web son programas separados ejecutados en contextos independientes, no comparten datos (por otro lado se activan y mueren con la petición) Ni HTTP, ni CGI, tienen soporte para datos de estado de sesión. Ambos protocolos son sin estado y no tienen el concepto de sesión. 10 Sesiones web y datos de estado de la sesión z Debido a la popularidad de las aplicaciones de internet han surgido diversos mecanismos que permiten compartir datos de sesión entre scripts CGI (y otros programas externos). Estos mecanismos se clasifican en: z z Mecanismos del lado del servidor: se pueden usar archivos o bases de datos como repositorios de datos de una sesión. La desventaja de este mecanismo es el overhead que genera y la necesidad de administrar estos archivos donde se guardan los datos que deben persistir entre sesiones. Mecanismos del lado del cliente: campos ocultos del formulario, cookies. Sesiones web y datos de estado de la sesión z Campos ocultos en el formulario: z z En este caso se introducen los datos de estado de sesión en los formularios web generados dinámicamente. Es un campo oculto. Es simple, ya que sólo requiere de la introducción de nuevos campos en el formulario y no se necesitan recursos adicionales ni el cliente ni en el servidor. La simplicidad conlleva el riesgo de privacidad y seguridad, ya que los datos de estado se transmiten como campos ocultos sin proteger. Este esquema no debe utilizarse para transmitir datos sensibles tales como el número de las tarjetas de crédito. Sesiones web y datos de estado de la sesión z Uso de cookies: z z Este esquema hace uso de una extensión del protocolo HTTP básico que permite que una respuesta del servidor pueda contener información de estado que el cliente deberá almacenar en un objeto. Un script puede crear un cookie como parte de la respuesta HTTP. SE incluye la línea de cabecera Set-Cookie. 11 Sesiones web y datos de estado de la sesión z z z Cuando el navegador recibe esta respuesta, crea un objeto, una cookie, que contiene el par nombre-valor especificado para cada elemento de datos de estado, por ejemplo: id=12345. La cookie se almacena en la máquina cliente de forma temporal o de forma persistente. Cuando sea necesario, el cookie (el par nombre-valor) se envía en las peticiones al servidor web. Servlets z z z Son otro tipo de programa Java. Son extensiones del servidor, ejecutados en la máquina del servidor, como una acción desencadenada por la petición del cliente. A diferencia de los scripts CGI, pueden usarse para extender cualquier servidor que tenga un protocolo del tipo peticiónrespuesta. No obstante, se utilizan normalmente con servidores HTTP, en cuyo caso se denominan servlets http. Servlets: Soporte Arquitectónico z z A diferencia de los scripts cgi, que ejecutan en el servidor sin ningún sistema de soporte arquitectónico adicional, la ejecución de los servlets requiere la existencia de un módulo conocido como motor de servlets o contenedor de servlets. Dependiendo de la implementación del servidor, un servlet puede persistir mientras siga teniendo peticiones, o de forma indefinida hasta que se apague el servidor. 12 Servlets: Soporte Arquitectónico z Persistencia: z z z Un script cgi se carga y ejecuta cada vez que un cliente lo solicita, mientras que una sola instancia de un servlet seguirá ejecutando cuando tenga peticiones. Debido a esta característica un servlet puede mantener datos de estado de las sesiones de los clientes durante su tiempo de vida. Existen varias implementaciones que proporcionan la arquitectura de servlets: el JSWDK y el Apache Tomcat. Applets z z Son clases java solicitadas por el navegador a un servidor web, utilizando el protocolo HTTP y ejecutadas a continuación por la máquina virtual java en el entorno del navegador. Un applet se especifica en una página HTML usando la etiqueta APPLET Applets z z z z Cuando el navegador analiza la etiqueta, se lanza una petición al servidor HTTP. GET /applets/HolaMundo.class HTTP/1.1 El servidor localiza el archivo y envía su contenido al cliente en el cuerpo de la respuesta http. Una vez recibido el archivo de la clase del applet, el navegador lo ejecuta en su maquina virtual de Java y muestra su resultado. 13 Petición HTTP Servidor Cliente Respuesta HTTP Applets z Debido a que los applets se descargan de una máquina remota y se ejecutan en la máquina local, su ejecución está sometida a restricciones por razones de seguridad. z z Una de estas restricciones es que el applet no tiene permitido leer o escribir archivos almacenados en el computador en que se está ejecutando. Otra restricción es que no tiene permitido la realización de conexiones de red excepto a la máquina de donde proviene Servicios WEB z z z Se proponen para la construcción de aplicaciones a partir de componentes distribuidos (servicios) independientes del lenguaje y de la plataforma. Un servicio lo proporciona un servidor y es accedido por un cliente. Un servicio web es un servicio tradicional puesto a disposición de todo el mundo en internet. Este servicio web se apega a un conjunto de estándares que le permiten ser descubierto y accedido a través de la red por aplicaciones que también se apegan a dichos estándares. 14 Servicios WEB z Ejemplos de servicios: reporte meteorológico, validación de tarjetas de crédito, generador de números primos, Mapping de una dirección IP a un país, Información sobre el campeonato de fútbol europeo 2008, envío de texto para eliminar lenguaje obsceno, envíos de sms, conversión de temperatura (celcius- farenheit) etc. (www.xmethods.net) Arquitectura de Servicios z z z z z Servicio de Directorio: permite al servicio ser registrado y localizado. Se adhiere al estándar de descripción, descubrimiento e integración universales: UDDI (Universal Description, Discovery and Integration) Capa de descripción de servicios: permiten que un servicio sea descrito en el directorio (WSDL, Web service description language, muy parecido a los lenguajes de definición de interfaz). Capa de mensajería: proporciona mecanismos para la intercomunicación entre procesos, incluyendo la funcionalidad del empaquetamiento de datos (Soap, XML) Capa de transporte: envía los mensajes (TCP, HTTP, SMTP, etc) Capa de red: se encarga de la transmisión física y del encaminamiento de paquetes (IP) Protocolos z Capa de descripción de servicios: z z Permite describir un servicio en el directorio (WSDL, Web service description language). Es un lenguaje formal muy parecido a los lenguajes de definición de interfaz. Una descripción WSDL contiene definiciones precisas de las interfaces provistas por un servicio, es decir procedimientos, tipos de datos, etc. Las descripciones pueden transformarse automáticamente en resguardos del lado del cliente y del lado del servidor. 15 Soap z z z Soap: es un protocolo que al igual que Corba o JAVA RMI incorpora el paradigma de los objetos distribuidos. La diferencia es que también incorpora los protocolos de Internet. Es un protocolo que extiende HTTP para permitir acceso a objetos distribuidos que representan servicios web. Cada mensaje soap se codifica en XML por razones de inter-operabilidad. El mensaje se transporta en una petición o respuesta http Soap Nombre del método, lista de parámetros servidor web Cliente Web objeto de servicio valor devuelto Petición Respuesta Look up a service Client machine Server machine Client application Server application Stub Stub Communication subsystem SOAP Publish service Communication subsystem Generate stub from WSDL description Generate stub from WSDL description Servicedescription description(WSDL) (WSDL) Service Service description (WSDL) Directory service (UDDI) 16 Procesos: Clientes z z La pieza más importante del lado del cliente es el navegador, que permite al usuario navegar a través de páginas web, que provienen del servidor. La navegación se realiza a través de hipervínculos. Idealmente, los navegadores deben ser independientes de la plataforma. Browser engine (motor de navegador) Display back end User interface Rendering engine (motor de proceso de imagen) Network comm. Client-side script interpreter HTML/XML parser Componentes lógicos de un Navegador WEB Componentes de un navegador z z El motor de proceso de imagen contiene todo el código para mostrar apropiadamente los documentos en pantalla. Este proceso de imagen requiere, por lo menos, el análisis sintáctico del XML o del HTML, aunque también puede requerir de la interpretación de un script. El motor del navegador proporciona los mecanismos indispensables para que el usuario final revise el documento, seleccione algunas partes, active los hipervínculos, etc. 17 Componentes de un navegador z z Plug-in: es un pequeño programa que puede ser dinámicamnete cargado en un navegador para manejar un tipo de documento específico. Proxy web: originalmente se utilizaba para permitir que un navegador manejara protocolos, a nivel de aplicación, diferentes de HTTP. Esta funcionalidad ya la poseen los navegadores. No obstante los Proxies siguen usándose para filtrar solicitudes y respuestas, almacenamiento en cache, entre otras funciones. Un proxy web ampliamente utilizado es Squid. Procesos: Servidores z z El servidor WEB más popular es Apache, que se estima es utilizado para alojar aproximadamente el 70% de todos los sitios WEB. Es una pieza compleja de software, altamente configurable y flexible. Servidores WEB basados en Clusters z z Un servidor WEB puede sobrecargarse con facilidad. Solución: replicar el servidor en un cluster de servidores y utilizar un front-end para direccionar las solicitudes de los clientes hacia una de las réplicas. 18 Web server Web server Web server Web server LAN Front end Request Front end handles all incoming requests and outgoing responses Response Servidores WEB basados en Clusters z z El front end se puede convertir en un cuello de botella. Si la conmutación se hace a nivel de capa de transporte , no se puede tomar en cuenta el contenido de la solicitud HTTP enviada a lo largo de la conexión TCP. En este caso se pasan los datos a uno de los servidores de acuerdo con sus características de carga. Servidores WEB basados en Clusters z Distribución consciente del contenido: primero se inspecciona la solicitud HTTP entrante y luego se re-direcciona al servidor más adecuado. Ventajas: z z Si se remiten las solicitudes para el mismo documento al mismo servidor, dicho servidor puede ser capaz de guardar en memoria cache el documento. Los tiempos de respuesta son más rápidos (Y si es muy popular?) Es posible distribuir el conjunto de documentos entre los servidores en lugar de tener que replicar cada documento en cada servidor. 19 Servidores WEB basados en Clusters z z Distribución consciente del contenido. Desventajas: el front end tiene que realizar mucho trabajo. Otras opciones para establecer grupos de servidores web: utilizar un round robin DNS, mediante el cual: z z z z un sólo nombre de dominio se asocia con múltiples direcciones IP. Cuando se resuelve el nombre de un servidor WEB, el navegador recibe una lista de múltiples direcciones, correspondiendo cada dirección a un servidor del grupo. Los navegadores eligen normalmente al primero de la lista. Existen otras alternativas (Cardellini y colaboradores 2002) Comunicación: HTTP z z z Es un protocolo, orientado a conexión, sin estado y de petición–respuesta. Los clientes WEB o navegadores implementan el protocolo, para poder conectarse a los servidores web y obtener documentos HTML. El HTTP está basado en TCP. Siempre que un cliente envía una solicitud a un servidor , primero establece una conexión TCP con el servidor y luego envía su mensaje a través de la conexión. Al utilizar TCP, HTTP no tienen por qué preocuparse por solicitudes y respuestas perdidas. Comunicación: HTTP z z Un servidor HTTP o servidor WEB ejecuta por defecto en el puerto 80. En http/1.0 cada conexión sólo permite una ronda de petición-respuesta: un cliente obtiene una conexión y manda una petición; el servidor procesa la petición, emite una respuesta y cierra la conexión (conexiones no persistentes) 20 HTTP z z Si un cliente necesita contactar al mismo servidor más de una vez en una misma sesión debe reconectarse al servidor por cada nueva petición. Este esquema trabaja bien si sólo se van a recibir documentos simples, no obstante, no es muy eficiente para recibir documentos que contienen un gran número de enlaces a otros documentos. HTTP z z z Como resultado http/1.0 se extendió para permitir la cabecera de petición Connection: Keep-Alive, que es enviada por los clientes que desean una conexión persistente con el servidor; el servidor mantiene la conexión abierta después de enviar la respuesta. En http/1.1 las conexiones son persistentes por defecto. Para mejorar aún más el desempeño, un cliente puede emitir varias solicitudes en fila sin esperar la respuesta de la primera solicitud (canalización o pipelining) HTTP z El protocolo, independientemente de si se mantiene o no la sesión abierta, sigue siendo sin estado. Cada petición se maneja como una nueva. 21 HTTP z Http es un protocolo de petición-respuesta basado en texto, ya que tanto la petición como la respuesta son cadenas de caracteres. Cada petición y respuesta están compuestas, en orden, por las siguientes partes: z z z z La línea de petición/respuesta Una sección de cabecera Una línea en blanco El cuerpo. Ejemplos URI Solicitado Protocolo Método http GET /index.html HTTP/1.1 <línea en blanco> Línea de Petición Métodos: GET: para solicitar el contenido de un documento WEB referenciado por el URI especificado. HEAD: Para solicitar sólo la cabecera del documento, no el documento completo. POST: Usado para enviar datos a un proceso servidor. HTTP La sección de cabecera puede estar compuesta por una o más líneas con el siguiente formato: <clave>: <valor>\r\n Algunas de las claves son: - Accept: especifica los tipos de contenido aceptados por el cliente. - User-Agent: especifica el tipo de navegador. - Connection: Se puede especificar “Keep-Alive” - Host: Nombre del servidor. z 22 Ejemplos HEAD / HTTP/1.1 Accept:*/* Connection: Keep-Alive Host: algunaMaquina.com User-Agent: Generic <linea en blanco> POST /cgi/miServidor.cgi HTTP/1.0 Accept: */* Connection: Keep-Alive Host: algunaMaquina.com User-Agent: Generic Content-type: application/x-www.form-urlencoded Content-length: 11 <linea en blanco> Nombre=jorge&[email protected] La especificación del tipo de contenido sigue un esquema establecido en el protocolo conocido como MIME Códigos devueltos por HTTP z En respuesta a un petición del cliente, el servidor HTTP debe enviar una respuesta. La respuesta también se compone de varias partes: z z z z 1. La respuesta o línea de estado 2. Una sección de cabecera 3. Una línea en blanco El cuerpo. Códigos devueltos por HTTP Los códigos de estado son los siguientes: z 100-199 Informativo z 200-299 Petición del cliente satisfactoria z 300-399 Petición del cliente redirigida z 400-499 Petición del Cliente incompleta. z 500-599 Errores en el servidor. Ejemplos: HTTP/1.0 200 OK HTTP/1.1 404 NOT FOUND 23 Asignación de Nombres z z z La web utiliza un solo sistema de asignación de nombres para referirse a documentos. Los nombres utilizados se llaman identificadores de recursos uniformes o URI Los URI se presentan en dos formas: z z Un URL (localizador de recursos uniforme): identifica el documento e incluye información sobre cómo y dónde accederlo (depende de la localización) Un URN (nombre de recursos uniforme): se utiliza como referencia globalmente única a un documento, independiente de la localización y persistente. Asignación de Nombres z La sintaxis de un URL está determinada por: z z z z Su esquema asociado o protocolo. El nombre del esquema es parte de l URI (http, mailto, ftp, telnet, etc). El nombre DNS del servidor que contiene el documento, aunque también es posible utilizar una dirección IP. También se incluye el número de puerto; cuando se deja afuera se usa un puerto pre-establecido. Finalmente, el nombre del documento. Scheme http Host name :// www.cs.vu.nl Pathname /home/steen/mbox (a) Scheme http Host name Port Pathname :// www.cs.vu.nl : 80 /home/steen/mbox (b) Scheme http Host name Port Pathname :// 130.37.24.11 : 80 /home/steen/mbox (c) urn:issn:1535-3613 24 Consistencia y Replicación z La mayoría de los productos de investigación y desarrollo en este sentido se han dirigido hacia el soporte del contenido estático. Almacenamiento en el CACHE z z z En el navegador. Los clientes, en general, pueden indicar en qué momento se verificará la consistencia. En el Proxy web. El proxy puede guardar el resultado de una búsqueda y éste puede ser utilizado por más de un cliente (cache compartido). Caches Jerárquicos: aparte de los caches en los navegadores y/o proxies también es posible colocar caches que cubran una región o país. Las latencias suelen ser más altas comparados con caches no jerárquicos (se verifica en múltiples caches). Los documentos muy populares tienen mayor probabilidad de encontrarse en el cache más cercano al cliente. Almacenamiento en el CACHE z Caches Cooperativos: z z z z Varios proxies trabajan en conjunto. Si hay una falla en un proxy, éste verifica en los proxies vecinos para comprobar si alguno tiene el documento solicitado. Si la verificación falla, se remite la búsqueda al servidor web responsable del documento. Estudios muestran que esta técnica puede ser altamente efectiva para grupos pequeños conectados a través de una LAN. 25 Caches Cooperativos Web server 3. Forward request to Web server 1. Look in local cache Cache Web proxy 2. Ask neighboring proxy caches Client Client Client Web proxy Cache Client Client Client Web proxy HTTP Get request Cache Client Client Client Consistencia z z z Para garantizar que un documento sea consistente, algunos navegadores utilizan la instrucción GET del protocolo HTTP, para preguntar por el tiempo de la última modificación. Si el documento cambió con respecto a la versión del navegador, se trae el documento del servidor, de lo contrario se regresa la versión local. Desventaja: comunicación Navegador-proxy en cada solicitud. Consistencia z El proxy web Squid trabaja con tiempos de expiración. z z z Texpiración Tguardado en cache Túltima_modificación: tiempo de modificación de un documento (registrado pos su propietario) Texpiración = α (Tguardado_ en_ cache − Túltima_ modificación) + Tguardado_ en_ cache α = 0.2 26 Traído al cache Traído al cache modificado modificado Si los documentos que no han sido modificados durante mucho tiempo, el tiempo de expiración será mayor (no serán verificados tan pronto) como aquellos recientemente modificados. La desventaja, es que un proxy puede regresar un documento inválido. El cliente no tiene forma de detectar que se ha recibido un documento obsoleto. Consistencia z z z Protocolos Push: el servidor notifica a los proxies que un documento ha sido modificado enviando una invalidación. Problema: el servidor tiene que llevar información sobre los proxies, lo cual provoca un problema de escalabilidad. Otro problema inherente a los proxies web es que sólo pueden ser utilizados para documentos estáticos. Replicación z z Redes de Entrega de Contenido (Content Delivery Networks). Surgen de la “observación” de que servir o proveer contenido WEB de un sólo servidor puede traer serios problemas de escalabilidad, confiabilidad y desempeño. Especialmente en la presencia de Flash crowds (múltitudes rápida): Cargas que pueden ser hasta un orden de magnitud mayor que las cargas medias. 27 2 days (a) 2 days (b) 6 days (c) 2.5 days (d) Replicación (CDN) z z La sobre-carga de una “multitud rápida” puede dejar temporalmente fuera de servicio a un site, u ocasionar tiempos de respuesta inusualmente altos. Consecuencia: descontentos por parte de los clientes. Enfoques Existentes Para manejar contenido en forma confiable y escalable: 1.) Clusters de Servidores WEB: - Si falla el centro de datos o el ISP que provee la conectividad el cluster entero queda inaccesible. - Es difícil aumentar a miles de servidores. - Se puede ofrecer “mirroring” ...pero requiere de la sincronización entre sitios espejo, que puede ser difícil. 28 Enfoques Existentes 2.) Proxy Caches: permiten reducir la latencia y los anchos de banda requeridos. No obstante, las tasas de acierto tienden a ser bajas (25 a 40%). Una de las principales razones es que se está utilizando mucho contenido dinámico. Redes de Entrega de Contenido z z Solución: Se diseña un sistema con varios “servidores sustitutos” de los servidores “originales”, que están en los bordes de la internet, más cercanos a los clientes. El contenido se replica en estos servidores, reduciendo así la demanda a los servidores “origen” (proveedores de contenido) y proporcionando un tiempo de respuesta más rápido para los usuarios. Redes de Entrega de Contenido z Las redes de este tipo: z z z z Trabajan muy de cerca con los proveedores de contenido a fin de desarrollar funcionalidades que le permitan mejorar el servicio para el web site. Ofrecen caching y control de consistencia. Ensamblaje de contenido dinámico, lo cual permite almacenar en “cache” algunas de sus partes. El CDN de la red controla la red (hw) y el software. 29 Redes de Entrega de Contenido z Ejemplos de CDNs z z z z z z z Akamai (surgió a partir de esfuerzos de de investigadores del MIT para resolver el problema de multitudes rápidas. El sistema actual tiene alrededor de 12000 servidores en alrededor de 1000 redes. ) Edge Stream LimeLight Networks Mirror Image CoDeeN Coral Globule Composición z Existen varias características estructurales, entre ellas: Organización, tipos de servidores, interacciones entre los componentes, contenido, servicio que proveen, etc. 30 Composición: organización z z Overlay: Servidores de aplicaciones y caches colocados en diversos lugares, manejan la distribución del contenido. Los componentes claves de la red, como routers, switches, etc no juegan ningún papel en la distribución de contenido. Network: los componenetes de la red, poseen código para identificar tipos específicos de aplicaciones y re-dirigir requerimientos a los sitios más adecuados basados en políticas pre-definidas o contenido. Composición: Tipos de Servidores z z Origen: El servidor donde reside la versión definitiva del contenido. La actualiza el proveedor de contenidos. Réplica: Maneja copias del contenido y puede responder a los clientes. Pueden ser “media servers” (contenido digital codificado), web servers (streaming media, u otro tipo de contenido almacenado por un web server) , o un cache (almacena copias de contenido en el borde de la red) . También se llaman sustitutos o servidores en los bordes. Composición: Contenido/Tipos de Servicio z z Los proveedores de una CDN manejan, en general, cualquier contenido digital (estático, dinámico, streaming media) y diferentes tipos de servicio: servicio de directorio, comercio electrónico, servicio de transferencia de archivos, etc). Las fuentes del contenido son: grandes empresas, proveedores de servicios WEB, compañías de multi-medios, “news broadcasters”. 31 Composición: Contenido/Tipos de Servicio z z Cierto tipo de contenido y servicios pueden requerir que se adopten características especiales en la arquitectura, tecnologías, etc. Es por ello que algunas CDNs se especializan en cierto tipo de contenido o servicios. Contenido Estático: la frecuencia de cambios es baja (páginas HTML, imágenes embebidas, archivos ejecutables, documentos pdfs, archivos de video o audio). Todos las CDN soportan este tipo de contenido. Puede ser colocado en caches sin mayores problemas y puede actualizarse usando técnicas tradicionales. Composición: Contenido/Tipos de Servicio z Contenido Dinámico: contenido que se personaliza para cada usuario o se crea bajo demanda de algúna aplicación. Cambia frecuentemente dependiendo de los requerimientos de los usuarios (animaciones, scripts, etc). Se considera que no es apropiado colocar este tipo de contenido en el cache (“uncacheable”) Composición: Contenido/Tipos de Servicio z Akamai: Para manejar el contenido dinámico los servidores en los bordes incluyen la technología Edge Sides Technology (www.esi.org) . Esta technología incluye lenguajes, añade aspectos de tolerancia a fallas (por si falla el servidor de origen) e integra el motor XSLT (Extensible StyleSheet Language Transformation) para procesar datos XML. 32 Composición: Contenido/Tipos de Servicio z z A través de ESI el contenido dinámico se puede separar en diversos fragmentos con diferentes características con respecto a si pueden permanecer o no en el cache. Los fragmentos que no pueden permanecer en el cache, se almacenan en el servidor origen. Todos los fragmentos se mantienen en objetos separados y se ensamblan dinámicamente en el servidor de borde como respuesta a los requerimientos de usuarios. Esto reduce la cantidad de datos que se debe recuperar del servidor origen. Composición: Contenido/Tipos de Servicio z Streaming Media: En vivo o bajo demanda. z z Eventos “en vivo”: deportes, conciertos, difusión de noticias, etc. Van instantaneamente del servidor de medios al cliente. Bajo demanda: los archivos son codificados y cargados en el servidor, donde están disponibles a petición de los clientes (video, música, películas). Los servidores de streaming media se “dotan” de protocolos especializados para el manejo de este tipo de contenidos a través de la Internet. Selección de Contenido y entrega z z Una distribución apropiada del contenido puede mejorar los tiempos de respuesta del cliente y la carga del servidor. Enfoques: Full Site: Los servidores réplicas o sustitutos poseen una copia completa del servidor origen. Es una solución sencilla pero puede no ser factible si el tamaño de los objetos es muy grande. Puede ser un problema la “actualización” de dicho contenido. 33 Selección de Contenido y entrega z Parcial: los servidores sustitutos sólo tienen copias de los objetos “embebidos”. La página base en HTML se recupera del servidor de origen y el resto de los objetos se recuperan del servidor sustituto. Cómo se seleccionan los objetos a ser replicados: z z z Empiricamente, siguiendo ciertas heurísticas. Por su popularidad (la popularidad varía mucho en el tiempo, pudiera no tenerse estadísticas de los nuevos objetos). Se agrupa el contenido basado en correlaciones, frecuencias de acceso, etc y se replica por clusters. Actualización de los Caches z z Los objetos en caches tienen asociado un tiempo de expiración. Para manejar la consistencia se manejan diferentes técnicas, entre las que se encuentran: z z z z Actualización periódica, Propagación de actualizaciones Actualización bajo demanda Invalidación 34 Actualización de los CAches z z z Actualización periódica: Los servidores origen están configurados con la siguiente información: qué contenio es apto para ser colocado en el cache, cuán periodicamente se deben hacer las actualizaciones. Los caches se actualizan regularmente. Propagación de actualizaciones: se dispara cuando hay un cambio en el contenido. Si los cambios son frecuentes se genera tráfico excesivo. Bajo demanda: la última copia del documento se propaga al servidor en el borde, como respuesta a una solicitud del dicho contenido Actualización de los Caches z Invalidación: se invía un mensaje de invalidación a todos los sustitutos cuando el contenido cambia en el servidor de origen. Request-Routing z z Es el sistema responsable de redireccionar los requerimientos de los clientes al servidor en el borde más apropiado para la entrega del contenido. La idea es direccionar el requerimiento al mejor servidor en el borde basado en métricas de proximidad, latencia percibida por el cliente, distancia, carga en el servidor sustituto, etc. 35 Request-Routing z z z La técnica de selección de contenido (full o parcial) es determinante para el sistema de enrutamiento de requerimientos. Full: Request routing system direcciona el requerimiento a un servidor sustituto, el cual puede atender el requerimiento completo. Parcial: El servidor origen provee el contenido básico y los servidores sustituto, el resto del contenido. Request-Routing CDN server Cache 6. Get embedded documents (if not already cached) 5. Get embedded documents Return IP address client-best server CDN DNS server 7. Embedded documents 1. Get base document 4 DNS lookups Client 3 Origin server 2. Document with refs to embedded documents Regular DNS system Request-Routing: pasos z z z z z (1) El requerimiento del cliente se dirige al servidor origen. (2) El servidor origen provee el contenido básico (index page con referencia a imágenes embebidas) (3) Hay un URL fantasma, el cual se transforma en el paso 3 en un servidor DNS de la CDN (4) Se redirecciona un cliente al servidor replicado que sea más adecuado para el cliente, de acuerdo a las métricas mencionadas con anterioridad (algoritmo propietario) (5) El cliente envía la solicitud al servidor replicado más adecuado; si éste no tiene alguno de los documentos en el cache, los busca en el servidor original (6). Los nuevos objetos se dejan en el cache 36 Algoritmo para enrutar requerimientos z z Adaptativos: toman en cuenta las condiciones actuales del sistema. La condición actual se obtiene estimando algunas métricas como la carga de los servidores replicados o la congestión de ciertos enlaces. Akamay usa un algoritmo adaptativo que se adapta a los flash crowds. No-adaptativos: usan heurísticas para seleccionar un servidor replicado en lugar de considerar la condición actual del sistema (round-robin, se supone que todos los servidores ´replicados tienen las mismas capacidades y son capaces de proveer el contenido solicitado. ) Algoritmo para enrutar requerimientos z Akamai: entre los aspectos que usa en la selección del servidor más adecuado se encuentran: z z El más cercano: en función de la topología de la red y de las características dinámicas de los enlaces (round-trip time bajo, baja tasa de pérdida de paquetes). Disponible: en función de la carga y del ancho de banda de la red. Un servidor con mucha carga o utilizando casi en su totalidad su ancha de banda no se encuentra disponible para servir al resto de los clientes. Algoritmo para enrutar requerimientos z Akamai: entre los aspectos que usa en la selección del servidor más adecuado se encuentran: z El más probable: Es una función de cuál servidor posee el contenido requerido por el cliente. Si todos los servidores poseen todo el contenido, round robin puede ser una estrategia. 37 Medidas de Desempeño z Son necesarias para evaluar el desempeño de la CDN: qué tan bien se sirve a los clientes el contenido o los servicios solicitados?. Normalmente se utilizan 5 métricas para evaluar el desempeño de una CDN: Tasa de aciertos (caches), ancho de banda reservado, latencia, utilización de los servidores sustitutos, confiabilidad. Métricas de desempeño z z z z z Tasa de aciertos (caches): Una alta tasa de aciertos sugiere que la técnica de almacenamiento y manejo del cache es adecuada. Ancho de banda reservado: Ancho de banda utilizado por el servidor origen (mientras menos, mejor) Latencia: Tiempo de respuesta percibido por el usuario. Una latencia reducida, implica que el servidor origen está utilizando menos ancho de banda. Utilización de los servidores sustitutos: Fracción de tiempo durante la cual los sustitutos permanecen ocupados. Confiabilidad: se mide la tasa de paquetes perdidos para determinar la confiabilidad de la CDN. Métricas de Desempeño Medidas Internas: Los servidores de la CDN se pueden equipar para recoger sus propias estadísticas. Medidas Externas: realizadas por terceras partes, quienes informan a los clientes, sobre el desempeño de la CDN. Se colocan computadores en sitios especializados y miden cómo se desempeña un sitio web ante el requerimiento de un usuario 38 Tolerancia a Fallos z z z En los sitemas distribuidos basados en la WEB, la tolerancia a fallas se logra principalmente por medio de almacenamiento en cache del lado del cliente y replicación de servidores. La alta disponibilidad se logra mediante redundancia (Ejem: CDNs) La tolerancia a fallas es relativamente fácil de implementar considerando que los servidores no almancenan estado y la naturaleza estática del contenido provisto. Conclusiones z z Los sistemas basados en la web han hecho que las aplicaciones lleguen a ser más populares con los usuarios finales. El uso del documento web, como forma de intercambiar información se acerca a la forma en que las personas se comunican en los ambientes de oficina. Aunque los usuarios perciben una arquitectura C/S, los sitios web modernos están organizados a lo largo de arquitecturas de varios niveles, donde un componente final es responsable de generar páginas XML o HTML como respuesta que pueden presentarse al cliente. Conclusiones z z z Servicio: los usuarios finales pueden ser aplicaciones. Proliferan los servicios. Servicios muy diferentes tienen que poder ser descubiertos y colocados a disposición de clientes autorizados. Por consiguiente se han hecho grandes esfuerzos para estandarizar las descripciones de los servicios, las comunicaciones, directorios, etc. Cómo la web opera a través de la internet, se ha prestado mucha atención en la mejora del desempeño (cache , replicación), especialmente ante la presencia de multitudes rápidas (redes de entrega de contenido). Se estudian incluso maneras de hacer un caching parcial del contenido dinámico. La tolerancia a falla se maneja por técnicas estándar que se han aplicado desde hace mucho tiempo en otros sistemas distribuidos. 39