+ Sistemas Distribuidos Introducción Rodrigo Santamaría + 2 ¿Qué es un sistema distribuido? n Es un sistema en el que los componentes hardware o software: n n Se encuentran en computadores unidos mediante una red Se comunican únicamente mediante paso de mensajes ¿Qué sistemas que conozcas crees que pueden considerarse un sistema distribuido? + 3 Características de un SD n Concurrencia n Varios componentes acceden a la vez a un recurso compartido n Hardware: impresoras, discos n n Inexistencia de un reloj global n n Software: ficheros, bases de datos, objetos de datos Necesidad de temporalidad para coordinación/sincronización Fallos independientes n Por aislamiento de la red (red) n Por parada de un computador (hardware) Por terminación anormal de un programa (software) n + 4 Objetivos de la asignatura Comprensión de las características de los sistemas distribuidos a tener en cuenta por diseñadores e implementadores Presentación de los conceptos y técnicas fundamentales existentes para ayudar en el diseño e implementación de sistemas distribuidos + 5 Desafíos 1. Heterogeneidad 2. Extensibilidad 3. Seguridad 4. Escalabilidad 5. Tratamiento de fallos 6. Concurrencia 7. Transparencia + 6 1.- Heterogeneidad n En un SD existe heterogeneidad a mucho niveles: n n n SSOO à distintas llamadas al sistema Lenguajes de programación à representación de estructuras de datos, acceso a métodos, etc. n Implementaciones à adopción de estándares n n Redes à distintos protocolos de red HW à distinta representación de los datos Solución: middleware + 7 Heterogeneidad Middleware n Estrato SW que proporciona una abstracción de programación y enmascara la heterogeneidad subyacente n Varios ‘estándares’ n n n n CORBA, RMI SOAP, REST Middleware P2P … Java C Perl Middleware Python HTML JavaScript Ruby Internet/Intranet LAN/WAN OSI/TCP-IP 3G MacOS Windows Intel Motorola Linux Unix Android AMD PowerPC iOS Móviles + 8 2.- Extensibilidad n Grado en que se pueden añadir y publicar nuevos servicios para su uso por una variedad de programas cliente n n Publicación de interfaces Por ejemplo n RFC (Request For Comments) Propuestas de protocolos para Internet CORBA (Common Object Request Brocker Arquitecture) n n n n Envoltorio de código para crear accesos a servicios en un SD WSDL (Web Service Description Language) n Descripción y publicación de servicios web (SOAP) + 9 3.- Seguridad n Comunicación por paso de mensajes n n Estos mensajes pueden ser manipulados por terceros Tres desafíos principales: n Confidencialidad: Lectura de mensajes por terceros Integridad: n n n n Modificación de mensajes por terceros Disponibilidad n Interferencia con los procedimientos de acceso a los recursos + 10 Seguridad n Confidencialidad: n n n Integridad n n n Protección contra el descubrimiento de dichos mensajes por entidades no autorizadas Resuelta gracias a la criptografía Protección contra su alteración o corrupción Detección de su alteración o corrupción (p. ej. MD5) Disponibilidad n Protección contra la interferencia de otros mensajes o procedimientos no deseados n Por ejemplo ataques de denegación de servicio (DoS) n Ataques por sobreuso de servicios públicos n No resuelto No entraremos mucho en este aspecto al cubrirse en detalle en la asignatura Seguridad en Sistemas Informáticos + 11 4.- Escalabilidad n Un sistema es escalable si conserva su efectividad ante un incremento significativo del n n n Número de recursos Número de usuarios Puntos clave n n n Control del coste de los recursos HW Prevención del desbordamiento de recursos SW n Por ejemplo: IPV4 (234 direcciones IP)à IPV6 (2128 direcciones IP) Evitar cuellos de botella/pérdidas en prestaciones n Algoritmos descentralizados n Replicación n Uso de cachés + 12 Escalabilidad Internet https://www.isc.org/solutions/survey/history + 13 Escalabilidad Internet 1988 – 88M hosts http://www.informationweek.com/news/internet/reporting/210600289 2003 - 200M hosts Opte Project (http://www.opte.org/) Rojo – Asia Verde – Europa, África y Oriente Medio Azul – Norteamérica Amarillo – Sudamérica y Caribe Cyan – LANs Blanco - desconocido 14 2010 - 700M hosts Opte Project (http://www.opte.org/) Los puntos con mayor número de conexiones se acercan al blanco 15 + 16 5.- Tratamiento de fallos n En un sistema distribuido, los fallos siempre son parciales n Detección de fallos n n n Enmascaramiento de fallos n n n Checksum para fallos en la transmisión Detección de la caída de servidores Retransmisión de mensajes fallidos Servidores proxy Tolerancia a fallos à Redundancia n n n Rutas alternativas entre routers Sistemas de nombres duplicado Replicación de ficheros + 17 Tratamiento de fallos Disponibilidad n n Es la proporción de tiempo en que un sistema está utilizable n El fallo de un componente sólo debe afectar al trabajo relacionado con el componente defectuoso n Si falla un computador el usuario debe poder desplazarse a trabajar a otro de los que funcionen n Si falla un proceso servidor debería poder reiniciar su ejecución en otra ubicación Un sistema distribuido debería buscar un alto grado de disponibilidad + 18 6.- Concurrencia n Cada objeto que represente un recurso compartido en un sistema distribuido debe responsabilizarse de garantizar que opera correctamente en un entorno concurrente n Algunos objetos deberán reimplementarse para trabajar correctamente en entornos distribuidos n n Servidores multihilo Sincronización mediante semáforos u otros mecanismos + 19 7.- Transparencia n Ocultación al usuario y al programador de aplicaciones de los componentes de un sistema distribuido n El sistema se percibe como un todo, en vez de como una colección de componentes independientes + 20 Transparencia Tipos n De acceso n n De ubicación n n Se accede a los recursos sin necesidad de conocer su localización De concurrencia n n Se accede mediante igual mecanismo a recursos locales y remotos Varios procesos operan concurrentemente sin interferencia mutua De replicación n Uso de múltiples ejemplares de cada recurso para aumentar fiabilidad y prestaciones sin que los usuarios necesiten su conocimiento ¿Se te ocurre algún sistema distribuido que cumpla con alguno de estos tipos de transparencia? + 21 Transparencia Tipos (ii) n Frente a fallos n n Movilidad n n Reubicación de recursos y clientes en un sistema sin afectar la operación de los usuarios y programas Prestaciones n n Ocultación de fallos dejando que el usuario o programa de aplicación complete sus tareas a pesar de fallos HW o SW Reconfiguración del sistema para mejorar las prestaciones según varíe la carga de uso Escalado n Expansión en tamaño del sistema o aplicaciones sin cambiar la estructura subyacente o los algoritmos de aplicación + 22 Desafíos Contexto n Todos los desafíos son importantes n Dependiendo del contexto unos van a tener más relevancia que otros n n n n n Transacciones comerciales à seguridad, fallos, concurrencia Google à escalabilidad DNS à escalabilidad, fallos P2P à escalabilidad, fallos Cuando estemos estudiando un problema, a menudo n Daremos por ‘solventados’ algunos desafíos n Analizaremos cómo repercute en otros desafíos 23 + 24 Resumen n En un sistema distribuido (SD) los componentes están unidos mediante una red y se comunican mediante paso de mensajes n En un SD pueden convivir muchas plataformas, una heterogeneidad que trata de resolverse mediante middleware n En algunos casos es importante diseñar SDs que sean escalables, es decir, toleren un incremento en el número de recursos o usuarios. Especialmente importante si la escala es Internet n En un SD puede haber fallos a muchos niveles que en la medida de lo posible deben ser ocultados o tolerados n En un SD varios procesos pueden acceder a los mismos recursos a la vez. Esta concurrencia debe ser identificada y tratada adecuadamente n La seguridad y la extensibilidad son otros desafíos importantes, pero no nos centraremos mucho en ellos n Un tratamiento correcto de estos desafíos lleva a un sistema transparente en el que el usuario final no percibe todos estos aspectos n Es importante definir el contexto en el que nos encontramos para identificar los desafíos clave, o los que vamos a necesitar enfrentar en nuestro modelo de SD + 25 Referencias n G. Colouris, J. Dollimore, T. Kindberg and G. Blair. Distributed Systems: Concepts and Design (5th Ed). Addison-Wesley, 2011 n n Internet World Stats n n Capítulo 1 http://www.internetworldstats.com/ Internet Systems Consortium n http://www.isc.org 26