Evolución de la Computación Distribuida. Mafla Enrique. EPN.
Introducción a los Sistemas Distribuidos. García, F., Escolar, S., Sánchez L., García Javier. Universidad Carlos III de Madrid
Sistemas Distribuidos. De la Cruz Bernardo.
Contenido ꢀ Evolución de la informática ꢀ Concepto de sistema distribuido ꢀ Ejemplos de aplicaciones distribuidas ꢀ Ventajas e inconvenientes de los sistemas distribuidos ꢀ Sistemas distribuidos vs. paralelos ꢀ Desafíos de los sistemas distribuidos ꢀ Arquitecturas de computación distribuida Evolución de la Informática ꢀ En los años 70: ꢀ Mainframes centrales ꢀ Sistemas de tiempo compartido ꢀ Recursos centralizados ꢀ Terminales simples ꢀ Interfaces de usuario poco amigables ꢀ Aparecen las primeras redes Evolución de la Informática ꢀ En los años 80: ꢀ PCs y estaciones de trabajo ꢀ Predominio de aplicaciones complejas ejecutadas localmente ꢀ Interfaces amigables ꢀ Redes de área local (LAN) ꢀ Aparecen los primeros sistemas operativos distribuidos ꢀ Mach, Sprite, Chorus, ... Evolución de la informática ꢀ En los años 90: ꢀ Despegue de las aplicaciones cliente/servidor ꢀ Más descentralización ꢀ Aplicaciones ejecutadas localmente y en red ꢀ Enorme difusión de Internet gracias a la web ꢀ Nuevas necesidades y aplicaciones basadas en web ꢀ Comercio electrónico ꢀ Multimedia ꢀ Sistemas de control ꢀ Aplicaciones médicas ꢀ Supercomputación en Internet Evolución de la informática ꢀ En los años 2000: ꢀ Nuevos paradigmas de computación distribuida ꢀ Grid computing ꢀ Peer-to-Peer ꢀ Computación ubicua ꢀ Dispositivos móviles ꢀ Aplicaciones para Internet basadas en Web ꢀ Tendencia: todas las aplicaciones en red Evolución de la informática ꢀ Infraestructura tradicional Evolución de la informática ꢀ Infraestructura tradicional ꢀ Consolidación de recursos Evolución de la tecnología ꢀ La ley de Bell (1972): ꢀ “aparecerá una nueva clase de computadoras (tecnología) cada 10 años”
ꢀ La ley de Moore (1965):
ꢀ “el número de transistores por chip se doblará cada 18-24 meses” Infraestructura tradicional Máquinas Virtuales Sistema Distribuido ꢀ Sistema formado por recursos de computación (hardware y software) físicamente distribuidos e interconectados a través de una red, que comunican mediante paso de mensajes y cooperan para realizar una determinada tarea Otras definiciones “Un sistema distribuido es aquel en el que no puedes trabajar con tu máquina por el fallo de otra máquina que ni siquiera sabías que existía” -Leslie Lamport
“Un sistema distribuido es aquel en el que los
computadores localizados en una red comunican y coordinan sus acciones mediante paso de mensajes” -George Coulouris Conceptos previos ꢀ Un programa es un conjunto de instrucciones
ꢀ Un proceso es un programa en ejecución
ꢀ Una red de computadores es un conjunto de computadores conectados
por una red de interconexión
ꢀ Sistema distribuido Un conjunto de computadores (sin memoria ni reloj
común) conectados por una red ꢀ Aplicaciones distribuidas: Conjunto de procesos que ejecutan en uno o más computadores que colaboran y comunican intercambiando mensajes.
ꢀ Un protocolo es un conjunto de reglas e instrucciones que gobiernan la
comunicación en un sistema distribuido, es decir, el intercambio de mensajes Ejemplo: red de área local Ejemplo: Web Ejemplos de aplicaciones y sistemas distribuidos ꢀ Correo electrónico (IMAP, POP) ꢀ Transferencia de ficheros (FTP) ꢀ Servicios de News ꢀ WorldWideWeb (WWW) ꢀ Sistemas de control de tráfico aéreo ꢀ Aplicaciones bancarias ꢀ Comercio electrónico ꢀ Aplicaciones multimedia (videoconferencias, vídeo bajo demanda , etc.) ꢀ El ancho de banda en estas aplicaciones es un orden de magnitud mayor que en otras ꢀ Requieren calidad de servicio (QoS) ꢀ Aplicaciones médicas (transferencia de imágenes) Objetivos de los SSDD ꢀ Sistemas distribuidos ꢀ Objetivo: facilitar a los usuarios (y a las aplicaciones) el acceso a los recursos remotos, y compartirlos de manera controlada y eficiente ꢀ Redes de computadoras Sistemas distribuidos y paralelos ꢀ Sistemas distribuidos ꢀ Objetivo: compartir recursos y colaborar ꢀ Redes de computadoras ꢀ Sistemas paralelos ꢀ Objetivo: ꢀ Alto rendimiento (speedup) ꢀ Alta productividad ꢀ Máquinas paralelas (arquitecturas dedicadas) ꢀ Multiprocesadores ꢀ Multicomputadores ꢀ Redes de estaciones de trabajo trabajando como un multicomputador (cluster) ꢀ Grid Computing (www.gridcomputing.com) Ventajas que pueden ofrecer los SSDD ꢀ Compartir recursos: HW, SW, datos (impresoras, computadoras, dispositivos de almacenamiento, datos, archivos, paginas web y Redes, etc.) ꢀ Acceso a recursos remotos. ꢀ Modelo cliente-servidor ꢀ Modelo basado en objetos ꢀ Ofrecen una buena relación coste/rendimiento ꢀ Capacidad de crecimiento (escalabilidad) ꢀ Tolerancia a fallos, disponibilidad ꢀ Replicación ꢀ Concurrencia: servicio a múltiples usuarios simultáneamente ꢀ Velocidad: capacidad global de procesamiento disponible para: ꢀ Ejecución paralela de una aplicación Desventajas de los sistemas distribuidos ꢀ Interconexión ꢀ Coste ꢀ Fiabilidad, pérdida de mensajes ꢀ Saturación ꢀ Comunicaciones inseguras ꢀ Software más complejo ꢀ Potencia de cada nodo no adecuada Aspectos a tomar en cuenta en el diseño: ꢀ Seguridad ꢀ Mientras la conectividad y el intercambio aumentan, la seguridad se vuelve cada vez más importante. En la práctica común, los sistemas proporcionan poca protección en contra del espionaje o de la intrusión en las comunicaciones. Aspectos a tomar en cuenta en el diseño: ꢀ Transparencia en la distribución
ꢀ Un sistema distribuido debe ocultar el hecho de que
sus procesos y recursos están físicamente distribuidos a través de múltiples computadoras, Aspectos a tomar en cuenta en el diseño: ꢀ Formas de Transparencia en la distribución Transparencia Descripción Acceso Oculta diferencias en la representación delos datos y laforma en que un recurso accede a los datos. Ubicación Oculta la localización de un recurso. Migración Oculta el que un recurso pudiera moverse a otra ubicación. Reubicación Oculta el que un recurso pudiera moverse a otra ubicación mientras está en uso. Replicación Ocultael número de copias de un recurso. Concurrencia Oculta que un recurso puede ser compartido por varios usuarios que compiten por el. Falla Oculta la falla y recuperación de un recurso. Aspectos a tomar en cuenta en el diseño: ꢀ Nivel de transparencia ꢀ Buscar la transparencia de distribución puede ser un objetivo cuando diseñamos e implementamos sistemas distribuidos, pero debemos considerarla junto con otros problemas tales como el rendimiento y la comprensibilidad. ꢀ El costo de no tener capacidad para lograr la transparencia completa puede ser sorprendentemente alto. Aspectos a tomar en cuenta en el diseño: ꢀ Grado de apertura Un sistema distribuido abierto es un sistema que ofrece servicios de acuerdo con las reglas estándar que describen la sintaxis y la semántica de dichosservicios. ꢀ La interoperabilidad define la extensión mediante el cual dos implementaciones de sistemas o componentes de fabricantes distintos pueden coexistir y trabajar juntos si únicamente se apoyan en sus servicios mutuos tal como se especifica mediante un estándar común. ꢀ La portabilidad define la extensión mediante la cual una aplicación desarrollada para un sistema distribuido A se pueda ejecutar, sin modificación, en un sistema distribuido B quecomparte la misma interfaz que A. Aspectos a tomar en cuenta en el diseño: ꢀ Escalabilidad La escalabilidad de un sistema se puede medir de acuerdo con al menostresdimensiones: ꢀ Primero, un sistema puede ser escalable con respecto a su tamaño, lo cual significa que podemos agregarle fácilmente usuariosyrecursos. ꢀ Segundo, un sistema escalable geográficamente es aquel en el cual usuarios y recursos pueden radicar muy lejos unos de los otros. ꢀ Tercero, un sistema puede ser escalable administrativamente; esto es, puede ser fácil de manejar incluso si involucra muchas organizaciones administrativas diferentes. Aspectos a tomar en cuenta en el diseño: ꢀ Escalabilidad ꢀ Desafortunadamente, con frecuencia un sistema escalable en una o más de estas dimensiones exhibe alguna pérdida de rendimiento al escalarlo.
ꢀ En la mayoría de los casos, los problemas de
escalabilidad en sistemas distribuidos aparecen como problemas de rendimiento ocasionados por la limitación de capacidad de servidores y redes. Arquitecturas de computación distribuida ꢀ Cliente - servidor ꢀ Servicios Web ꢀ Computación en la nube ꢀ Micro servicios Modelo Cliente - Servidor Servicios Web Computación en la Nube Micro Servicios Gracias