Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
Sistemas Distribuidos Introducción Fernando Pérez José María PeñaMaría S. Pérez Sistemas Distribuidos 1 Preámbulo: ¿de dónde venimos? • En SS.OO. aprendimos comunicación entre procesos remotos – Usando sockets stream (TCP) y datagramas (UDP) – ¿No es suficiente? • Quedan muchas cuestiones por resolver: – ¿qué información intercambian? ¿qué formato usan (p.e. entero little o big endian vs texto)? ¿cómo se localizan? ¿qué patrón de comunicación siguen? ¿cómo lograr eficiencia, escalabilidad, paralelismo, tolerancia a fallos y seguridad en la comunicación?... – ¿cómo implementar servicios del S.O. en un entorno remoto? • Acceso a ficheros y dispositivos remotos • Gestión de procesos remotos • Sincronización entre procesos remotos – ¿mecanismos de comunicación de más alto nivel? • Aprenderemos a crear aplicaciones distribuidas Fernando Pérez José María PeñaMaría S. Pérez Acceso web mediante telnet 2000 <!DOCTYPE html>……. 2000 ia/imagenes/QS.jpg">…….. 17ba <p id="dia_semana" >MIÉRCOLES</p>.... 0 Sistemas Distribuidos 2 $ telnet www.upm.es 80 GET / HTTP/1.1 host:www.upm.es Long. trozo 1º Long. trozo 2º Long. trozo 3º No más trozos HTTP/1.1 200 OK Date: Mon, 27 Jan 2020 09:18:39 GMT Server: Apache Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate Pragma: no-cache Vary: Accept-Encoding Content-Type: text/html; charset=UTF-8 Set-Cookie: PHPSESSID=kvk3pithfboqi05h88fd6k88af; path=/ Transfer-Encoding: chunked A trozos cab ecera cu erp o Línea en blanco petición Fernando Pérez José María PeñaMaría S. Pérez Sistemas Distribuidos 3 Contenido del tema • Definición de sistema distribuido. • Ventajas y desventajas de los sistemas distribuidos. • Modelos de computación distribuida. • Objetivos de un sistema distribuido. • Arquitectura software de los sistemas distribuidos. • Componentes de un sistema distribuido. Fernando Pérez José María PeñaMaría S. Pérez Sistemas Distribuidos 4 Definiciones de sistema distribuido Distributed Systems, Concepts and Design. G. Coulouris et al. • One in which hardware or software components located at networked computers communicate and coordinate their actions only by passing messages Distributed Systems. M. van Steen y A. S. Tanenbaum. • A distributed system is a collection of autonomous computing elements that appears to its users as a single coherent system Fernando Pérez José María PeñaMaría S. Pérez Sistemas Distribuidos 5 Sistema distribuido (SD) • Conjunto de nodos conectados por una red: – Máquinas reales, virtuales o contenedores – Conectadas mediante una red real o virtual – Sin memoria compartida (Sistema débilmente acoplado) – Sin reloj común – Dispositivos de E/S asociados a cada procesador – Fallos independientes de componentes del SD – Nodos pueden tener carácter heterogéneo (distintos UCP, S.O.) • Objetivo de la asignatura: Software de sistema del SD – “Sistema Operativo” del SD • Idealmente, visión de sistema único (Single System Image) – Usuarios/aplicaciones no son conscientes del carácter distribuido – No es fácil de alcanzar ni siempre deseable Fernando Pérez José María PeñaMaría S. Pérez Sistemas Distribuidos 6 Ventajas de los Sistemas Distribuidos Frente a solución centralizada • Economía: Buena relación rendimiento/coste. • Capacidad de crecimiento: Escalabilidad. • Alto rendimiento: Procesamiento paralelo. • Soporte de aplicaciones inherentemente distribuidas. • Fiabilidad y disponibilidad: Tolerancia a fallos. • Carácter abierto y heterogéneo. • Compartición de recursos y datos. Fernando Pérez José María PeñaMaría S. Pérez Sistemas Distribuidos 7 Desventajas de los Sistemas Distribuidos Frente a solución centralizada • Necesidad nuevo tipo de software que incluya comunicaciones • Red de interconexión introduce nuevos problemas: – Pérdida de mensajes y saturación. – Latencia puede provocar que al recibir un dato ya esté obsoleto. • Seguridad y confidencialidad • Definición alternativa de SD: – “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” (Lamport) Fernando Pérez José María PeñaMaría S. Pérez Sistemas Distribuidos 8 Fallacies of Distributed Computing 1. The network is reliable. 2. Latency is zero. 3. Bandwidth is infinite. 4. The network is secure. 5. Topology doesn't change. 6. There is one administrator. 7. Transport cost is zero. Diversas interpretaciones: – Coste de empaquetar/desempaquetar datos al enviarlos/recibirlos – Coste económico de la infraestructura de red 8. The network is homogeneous. • 7 primeras propuestas en 1994 por Peter Deusch (Sun) – Octava por James Gosling (Java/Sun) en 1996 Fernando Pérez José María PeñaMaría S. Pérez Sistemas Distribuidos 9 Afrontando las falacias • Las tendremos en cuenta a lo largo del curso • Algunos ejemplos para “combatir” la segunda falacia: – “Acercar” información a los interesados • Uso generalizado de cachés • Utilización de Content-Delivery-Networks (Wikipedia) – Lectura anticipada de información (read-ahead/prefetching) • Ideal: información ya disponible cuando se requiere (latencia = 0) • Cuidado: si finalmente no se usa, para aliviar la segunda falacia – hemos empeorado la tercera Solución tradicional Solución CDN Fernando Pérez José María PeñaMaría S. Pérez Sistemas Distribuidos 10 Aplicaciones de los Sistemas Distribuidos • Entornos empresariales: redes corporativas e intranets: – Sustituye a los clásicos mainframes. – “Sistema de información distribuido” • Entornos de computación de altas prestaciones (HPC): – Alternativa a costosos supercomputadores tradicionales. – “Sistema de computación distribuido” • Servicios con alta disponibilidad y rendimiento. • Sistemas distribuidos de gestión de bases de datos. • Sistemas de procesamiento de datos masivos (Big Data). • Aplicaciones multimedia. • Sistemas industriales distribuidos y aplicaciones de control. • Internet: un enorme sistema distribuido. • Ubicuos: automóviles, electrodomésticos, edificios, ... Fernando Pérez José María PeñaMaría S. Pérez Sistemas Distribuidos 11 Modelos de computación distribuida • Cluster Computing • Grid Computing • Volunteer Computing • Utility Computing • Cloud Computing • Mobile Computing • Ubiquitous Computing/Internet of Things • Edge/Fog Computing • Computing/Digital Continuum • Autonomic Computing Definiciones no excluyentes y algunas sin acuerdo general Fernando Pérez José María PeñaMaría S. Pérez Sistemas Distribuidos 12 Cluster Computing • SD dedicado a ejecutar una aplicación buscando – Altas prestaciones y/o alta disponibilidad. • Puede ejecutar varias aplicaciones mediante partición • Más fuertemente acoplado que SD general – Incluso puede ofrecer Single System View • Poca dispersión geográfica • Redes de alta velocidad • Normalmente sistema con nodos homogéneos • Carácter estático • Uso habitual de componentes hardware estándar • Necesidad de un planificador de trabajos (p.e. SLURM) • https://es.wikipedia.org/wiki/Magerit#Magerit_3_(2019) • https://docs.cesvima.upm.es/docs/magerit/es/latest/ejecucion-trabajos/ https://es.wikipedia.org/wiki/MageritMagerit_3_(2019) https://docs.cesvima.upm.es/docs/magerit/es/latest/ejecucion-trabajos/ Fernando Pérez José María PeñaMaría S. Pérez Sistemas Distribuidos 13 Grid Computing • “Cluster virtual” sobre máquinas de varias organizaciones – Se crea para ejecutar aplicación y luego puede desaparecer • Extensión de cluster computing a mayor escala • Máquinas con mayor dispersión geográfica • Menor grado de acoplamiento • Pueden extenderse a varios dominios de administración – Desde interdepartamentales hasta intercorporativos • Recursos no dedicados – Grid convive con SD de cada organización • Sistemas heterogéneos – Puede ser necesaria virtualización • Sistemas dinámicos Fernando Pérez José María PeñaMaríaS. Pérez Sistemas Distribuidos 14 Volunteer Computing • SD formado por recursos donados por usuarios a proyectos – Normalmente, ciclos de procesador y espacio de almacenamiento – Carácter altruista (Folding@home, SETI@home) • Similar a computación grid – Dinámico, recursos no dedicados, dispersión geográfica... • Pero con diferencias: – Implica individuos, no organizaciones – Asimetría de roles: usuario-proyecto • Simetría del grid: organización-organización – Mayores problema de seguridad • Usuarios anónimos Fernando Pérez José María PeñaMaría S. Pérez Sistemas Distribuidos 15 Utility Computing • Computación como otro servicio público (agua, gas, luz…) – “Alquiler” de recursos computacionales externos – Demanda dinámica basada en necesidades puntuales • On-demand Computing • Define un modelo de trabajo más que una plataforma – Aunque la solución natural es usar un SD → computación cloud • No es una idea nueva: John McCarthy (1961) – “Computing may someday be organized as a public utility just as the telephone system is a public utility.” • Necesidad de esquema de tarificación Fernando Pérez José María PeñaMaría S. Pérez Sistemas Distribuidos 16 Cloud Computing • Recursos HW y/o SW ofrecidos como servicio – Recursos virtualizados y dinámicamente escalables – Pago por uso • Modelos de servicio: – Infrastructure as a Service (ej Amazon Elastic Compute Cloud, EC2) • Oferta dinámica de recursos HW virtuales según necesite el cliente – Platform as a Service (ej. Google App Engine) • Proporciona una plataforma de desarrollo de software – Software as a Service (ej. Google Apps) • Ofrece aplicaciones de interés • Modelos de despliegue: – Público: servicio público – Privado: servicio para solo una organización • Alojado y gestionado internamente (on-premises) o externamente – Híbrido: combinación de público y privado Fernando Pérez José María PeñaMaría S. Pérez Sistemas Distribuidos 17 www.bigcommerce.com/blog/saas-vs-paas-vs-iaas/ http://www.bigcommerce.com/blog/saas-vs-paas-vs-iaas/ Fernando Pérez José María PeñaMaría S. Pérez Sistemas Distribuidos 18 Mobile Computing • SD incluye dispositivos portátiles con acceso remoto • Conectados de forma inalámbrica – a infraestructura del SD o formando redes ad hoc • Usuario accede de forma remota a su organización – Información “anywhere anytime” • Limitaciones en los recursos del dispositivo • Control de consumo de energía del dispositivo • Ancho de banda de comunicación variable • Modo desconectado – Usuario puede seguir trabajando sin conexión • Mayores amenazas a la seguridad y privacidad Fernando Pérez José María PeñaMaría S. Pérez Sistemas Distribuidos 19 Ubiquitous Computing (UbiComp) • Computadores omnipresentes, parte de ellos móviles • Algunos empotrados en sistemas físicos, invisibles al usuario • Otros portados por usuario (Wearable Computing) • Conectados entre sí ofreciendo un valor añadido • Plenamente integrados en el mundo para facilitar vida cotidiana • Pero permaneciendo prácticamente desapercibidos • Context-aware Computing – Comportamiento de la aplicación depende del contexto • Internet of Things (IoT): – Origen más prosaico (menos “filosófico”) que Ubicomp • Objetos cotidianos (“cosas”) que se conectan a Internet – Pero actualmente confluencia de ambas propuestas • Ejemplo IoT: Amazon Go Fernando Pérez José María PeñaMaría S. Pérez Sistemas Distribuidos 20 Visión UbiComp (Mark Weiser 1991) “We are therefore trying to conceive a new way of thinking about computers, one that takes into account the human world and allows the computers themselves to vanish into the background” “There is more information available at our fingertips during a walk in the woods than in any computer system, yet people find a walk among trees relaxing and computers frustrating. Machines that fit the human environment instead of forcing humans to enter theirs will make using a computer as refreshing as taking a walk in the woods” Fernando Pérez José María PeñaMaría S. Pérez Sistemas Distribuidos 21 Edge/Fog Computing • Acercar computación y recursos a los interesados – Mejora latencia y escalabilidad • Ej.: Netflix ubica nodos con contenidos más frecuentes en ISPs highscalability.com/blog/2017/12/11/netflix-what-happens-when-you-press-play.html • En IoT preprocesamiento datos sensores cerca de los mismos A Survey on Internet of Things: Architecture, Enabling Technologies, Security and Privacy, and Applications http://highscalability.com/blog/2017/12/11/netflix-what-happens-when-you-press-play.html Fernando Pérez José María PeñaMaría S. Pérez Computing/Digital Continuum Sistemas Distribuidos 22 Credits: Woodside Capital Fernando Pérez José María PeñaMaría S. Pérez Sistemas Distribuidos 23 Autonomic Computing • Sistemas cada vez más complejos: necesidad de autogestión – Iniciativa de IBM aplicable especialmente a SD • Inspirado por sistema nervioso autónomo • 4 áreas funcionales (self-*): – Auto-configuración – Auto-reparación – Auto-optimización – Auto-protección • Especialmente adecuado para UbiComp: – Si cada componente requiriera atención aunque fuera mínima... Fernando Pérez José María PeñaMaría S. Pérez Sistemas Distribuidos 24 Objetivos de un Sistema Distribuido • Transparencia • Rendimiento • Capacidad de crecimiento • Carácter abierto • Fiabilidad Fernando Pérez José María PeñaMaría S. Pérez Sistemas Distribuidos 25 Transparencia Existen varios perfiles de transparencia: – Acceso: Manera de acceder a recurso local igual que a remoto. – Posición: Se accede a los recursos sin conocer su localización. – Migración: Recursos pueden migrar sin afectar a los usuarios. – Concurrencia: Acceso concurrente no afecta a los usuarios. – Replicación: La existencia de réplicas no afecta a los usuarios. – Fallos: La ocurrencia de fallos no afecta a los usuarios. – Crecimiento: El crecimiento del sistema no afecta a los usuarios. – Heterogeneidad: Carácter heterogéneo no afecta a los usuarios. • No siempre se puede conseguir ni siempre es buena: – Diseñadores de Java RMI consideran que la invocación de métodos remota no debe ser exactamente igual que la local • “A Note on Distributed Computing”, Jim Waldo, 1994 – Programador debe ser consciente de cuándo usa un método remoto: • Por la latencia que conlleva y la posibilidad de que falle Fernando Pérez José María PeñaMaría S. Pérez Sistemas Distribuidos 26 Rendimiento Rendimiento para un servicio multiusuario: – Objetivo: Rendimiento no peor que un sistema centralizado Rendimiento para la ejecución paralela de aplicaciones: – Objetivo: Rendimiento proporcional a procesadores empleados Factores: • Uso de esquemas de caché – Intentar que muchos accesos se hagan localmente • Uso de esquemas de replicación – Reparto de carga entre componentes replicados • En ambos casos: Coste de mantener la coherencia Fernando Pérez José María PeñaMaría S. Pérez Sistemas Distribuidos 27 Capacidad de crecimiento Diseño de un sistema distribuido debe evitar “cuellos de botella”: – Componentes centralizados – Tablas centralizadas – Algoritmos centralizados Estrategias: – Reparto de estructuras de datos entre varios nodos. – Replicación y caché – Realización de parte del procesamiento en los nodos cliente. Características deseables en un algoritmo distribuido: – Ninguna máquina tiene información completa del estado del sistema – Las decisiones se basan sólo en información disponible localmente – El fallo de una máquina no debe invalidar el algoritmo – No debe asumir la existencia de un reloj global Fernando Pérez José María PeñaMaría S. Pérez Sistemas Distribuidos 28 Carácter abierto • SD abierto: servicios, protocolos, etc. publicados y estándares • Facilita la interacción con otros sistemas abiertos • Posibilita migración de aplicaciones a/desde otros SD abiertos • Flexibilidad para cambiar y extender el SD • Esconde heterogeneidad de HW, SO, lenguajes... FernandoPérez José María PeñaMaría S. Pérez Sistemas Distribuidos 29 Fiabilidad • Teóricamente: OR-lógico de sus componentes. • Sin embargo, a veces: AND-lógico de varios componentes. • Evitar componentes críticos (punto único de fallo). • Uso de replicación activa o pasiva – Mantenimiento de coherencia entre réplicas • Operación correcta en sistema particionado por error de red – “Reconciliación” al reintegrarse Fernando Pérez José María PeñaMaría S. Pérez Sistemas Distribuidos 30 Software de sistema de los SD • SO para máquina con m. compartida no válido para SD – SW fuertemente acoplado sobre HW fuertemente acoplado • Primeros sistemas: “Sistemas Operativos de Red” – Sistema operativo convencional + utilidades de red. – Protocolos de comunicación para acceso a recursos. – Cada máquina una copia de SO (posiblemente distinto). – SW débilmente acoplado sobre HW débilmente acoplado • Software de sistema de SD debería hacer que: – usuarios lo perciban como sistema centralizado (single system view) – SW fuertemente acoplado sobre HW débilmente acoplado • Dos arquitecturas software alternativas: – Sistemas Operativos Distribuidos – Middlewares Fernando Pérez José María PeñaMaría S. Pérez Sistemas Distribuidos 31 Sistemas Operativos Distribuidos (SOD) • Una copia del mismo SO en cada procesador • Necesidad de desarrollar nuevos conceptos • Algunos ejemplos de esta problemática específica: – ¿Cómo lograr exclusión mutua sin memoria compartida? – ¿Cómo tratar los interbloqueos sin un estado global? – Planificación de procesos: Cada copia del sistema operativo tiene su cola de planificación (migración de procesos). – ¿Cómo crear un árbol de ficheros único? – Implicaciones de no reloj único, presencia de fallos o heterogeneidad. • Ejemplos: Amoeba, Chorus y MOSIX • SOD revolución: ¿tiramos a la basura nuestros SSOO viejos? • Mejor evolución: middleware. Fernando Pérez José María PeñaMaría S. Pérez Sistemas Distribuidos 32 Middleware Middleware: – Capa de software que ejecuta sobre el sistema operativo local ofreciendo unos servicios distribuidos estandarizados. – Sistema abierto independiente del fabricante. – No depende del hardware y sistema operativo subyacente. Ejemplos: – DCE (Open Group). – CORBA (OMG). Fernando Pérez José María PeñaMaría S. Pérez Sistemas Distribuidos 33 SOD versus Middleware Hardware SO Hardware SO Hardware SO Middleware Hardware Hardware Hardware SOD Fernando Pérez José María PeñaMaría S. Pérez Sistemas Distribuidos 34 Componentes de un Sistema Distribuido Componentes = Temario – Arquitecturas y servicios de comunicación. – Servicio de nombres. – Memoria compartida distribuida. – Sistemas de ficheros distribuidos. – Servicios de sincronización y coordinación. – Gestión de procesos. Fernando Pérez José María PeñaMaría S. Pérez Sistemas Distribuidos 35 Arquitecturas de comunicación • Patrón de interacción entre componentes aplicación distribuida • Arquitecturas para computación distribuida – Maestro/trabajador – MapReduce • Cliente/servidor • Editor/subscriptor • Peer-to-peer – Sistemas estructurados: Chord – Sistemas desestructurados • Casos de estudio: Blockchain, BitTorrent, Skype Fernando Pérez José María PeñaMaría S. Pérez Sistemas Distribuidos 36 Servicios de comunicación • Paradigmas: – Paso de mensajes (sockets) – Llamada a procedimientos remotos (RPC). – Invocación de métodos remotos (RMI). – Servicios web. • Cardinalidad: – Unicast, multicast, anycast, broadcast • Persistencia de los mensajes: – Sistemas de colas de mensajes (MOM) Fernando Pérez José María PeñaMaría S. Pérez Sistemas Distribuidos 37 Servicio de nombres • Componente que gestiona nombre de recursos en SD • Composición, distribución y replicación del espacio de nombres • Servicio de páginas blancas vs amarillas • Servicio de descubrimiento • Casos de estudio: DNS, LDAP y ZeroConf Fernando Pérez José María PeñaMaría S. Pérez Sistemas Distribuidos 38 Memoria Compartida Distribuida (DSM) • Concepto: – Memoria físicamente privada pero lógicamente compartida. • Estrategias de implementación: – Basada en páginas. – Basada en variables compartidas. • Aspectos de diseño de DSM • Modelos de coherencia • DSM basada en espacios de tuplas: Linda Fernando Pérez José María PeñaMaría S. Pérez Sistemas Distribuidos 39 Sistemas de Ficheros Distribuidos • Estructura de un SFD • Resolución de nombres • Acceso a los datos • Gestión de cache • Gestión de cerrojos • Casos de estudio: NFS y AFS • Sistemas de ficheros paralelos: – Casos de estudio: Google File System y GPFS Fernando Pérez José María PeñaMaría S. Pérez Sistemas Distribuidos 40 Sincronización y Coordinación • Sincronización de procesos compleja por – Falta de memoria compartida y fallos en algunos componentes • Campo de desarrollo de algoritmos distribuidos: – Sincronización de relojes físicos y lógicos. – Exclusión mutua e interbloqueos. – Elección de líder – Problemas de consenso – Transacciones distribuidas: • Propiedades ACID, 2PC, modelos de commit/rollback. Fernando Pérez José María PeñaMaría S. Pérez Sistemas Distribuidos 41 Gestión de procesos • Caracterización de la carga: – Consumo de procesador y de otros recursos (Memoria) – Prioridades. • Estrategias de asignación de procesadores a procesos: – Cuándo, cuál y a dónde. • Planificación de procesos: – Planificación interna. – Planificación global. • Migración de procesos – Equilibrado de carga. – Aprovechamiento de máquinas inactivas.
Compartir