Logo Studenta

informática (30)

¡Este material tiene más páginas!

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.

Continuar navegando

Materiales relacionados

926 pag.
sistope2 - Maicol cortes (1)

User badge image

Desafío COL y ARG Veintitrés

24 pag.
sd-comunicacion-6pp

User badge image

Materiales Generales

13 pag.
1815-5928-eac-41-02-39

User badge image

Apuntes Generales