Sistemas Distribuidos
Tema 1. Introducción
Sistemas Distribuidos 1
Tema 1. Introducción
● ¿ Qué es un sistema distribuido ?
● Objetivos de diseño
● Tipos de sistemas distribuidos
Sistemas Distribuidos 2
¿Qué es un sistema distribuido?
Un sistema distribuido es una Cada elemento independiente lo
colección de elementos de llamamos nodo, y puede ser un
computación autónomos, que dan dispositivo hardware o un proceso
una apariencia de sistema único y software
coherente a sus usuarios
Los nodos colaboran para dar esa
apariencia de unidad, y de alguna
forma han de estar interconectados
Sistemas Distribuidos 3
Al ser nodos independientes...
● El tiempo. Al ser independientes, cada nodo tiene
su propia noción del tiempo
● Es necesario gestionar qué nodos están en el
sistema (puede ser dinámico), y como unos nodos
conocen al resto. Grupos abiertos vs cerrados.
Red estructurada (árbol, etc.) vs No estructurada
(P2P, etc.).
● Seguridad (intrusos), privacidad, etc.
Sistemas Distribuidos 4
Al aparentar ser un único sistema coherente...
● Es suficientemente complejo con ofrecer una vista
coherente. Algo más estricto sería que se viera
como si fuese un único nodo.
● Parte del sistema podría fallar, y es complejo (a
veces imposible) ocultar dichos fallos
● Los nodos se comportan igual,
independientemente de donde, cuando y como el
usuario interactúe con ellos
Sistemas Distribuidos 5
Middleware: El S.O. de los sistemas distribuidos
Contiene los componentes y funciones comunes, independientes de las
aplicaciones
Sistemas Distribuidos 6
Tema 1. Introducción
● ¿ Qué es un sistema distribuido ?
● Objetivos de diseño
● Tipos de sistemas distribuidos
Sistemas Distribuidos 7
Objetivos de diseño
● Compartir recursos
● Transparencia de la distribución
● Sistemas abiertos
● Escalabilidad
Sistemas Distribuidos 8
Compartir Recursos
● Compartir archivos en la nube
● Streaming de multimedia en sistemas P2P
● CDN (Content Distribution Network). Usado sobre
todo en hosting para aplicaciones web
● Servicio de e-mail
Sistemas Distribuidos 9
Transparencia en sistemas distribuidos (Ideal!!)
○ Acceso: El usuario accede a los recursos como si fueran
locales. No distingue entre datos locales o remotos
○ Localización: Es transparente donde están los recursos
■ Se pueden mover en uso: Relocalización
■ Se pueden mover en reposo: Migración
○ Concurrencia: Varios usuarios acceden concurrentemente
○ Replicación: El sistema crea réplicas de los recursos, de forma
transparente al usuario
○ Fallos: El sistema oculta y corrige los fallos (si puede)
○ Escalado: El sistema se expande o reduce sin afectar a las
aplicaciones (puede ser automático o manual)
Sistemas Distribuidos 10
Problemas para conseguir la transparencia completa
● La latencia no se puede ocultar (se mitiga con memorias caché,
heurísticas, replicación geo-distribuida, etc.)
● Es imposible ocultar los fallos de red/nodos
○ No podemos distinguir un nodo lento de uno que falla
○ No podemos estar seguros de que la operación se realizó
antes de fallar (problema de idempotencia en las operaciones)
● La transparencia completa tiene un coste
○ Mantener replicas exactas lleva tiempo (¿y si no queremos
esperar?)
○ Los discos pueden fallar => ¿ volcamos en cada escritura ? Es
más lento
Sistemas Distribuidos 11
La transparencia completa puede no ser deseable
● Un sistema distribuido donde usuarios cercanos físicamente
interactúan.
○ Juego masivo con distintos servidores para cada región
● Aplicación que ha de tener en cuenta la zona horaria de los
usuarios
● Cuando queremos que el usuario sepa que está ocurriendo
○ El sistema no responde en un tiempo máximo => informar del
fallo al usuario en lugar de esperar reintentando simplemente
Sistemas Distribuidos 12
Sistemas abiertos
El sistema ha de poder interactuar con otros sistemas abiertos
● Uso de interfaces bien definidas
○ Publicación de las interfaces
● Debe ser fácil interoperar con el sistema
○ Uso de protocolos estándar para el acceso a las interfaces
● Se ha de soportar portabilidad de aplicaciones
● Extensible/mejorable incrementalmente
○ Evitar romper con interfaces de versiones anteriores
○ Permitir el uso de interfaces de la versión anterior
Sistemas Distribuidos 13
Escalabilidad
● Tres componentes escalables, al menos
○ Número de usuario y procesos => Escalabilidad en tamaño
○ Distancia máxima entre nodos => Escalabilidad geográfica
○ Número de dominios administrativos (organizaciones que
acceden al sistema) => Escalabilidad administrativa
● La mayor parte de las veces nos limitamos a escalabilidad en tamaño
● La escalabilidad geográfica y administrativa sigue siendo un reto
actualmente
Sistemas Distribuidos 14
Escalabilidad. Problemas de tamaño
● Los sistemas centralizados
○ Limitados por las CPUs
○ Limitados por la capacidad de almacenamiento y la tasa de
transferencia entre CPUs y discos (limitado por el bus, etc.)
○ La red entre el usuario y el sistema centralizado
Sistemas Distribuidos 15
Escalabilidad. Modelo
● La cola no es infinita, pero en muchos modelos se asume que lo es
● Si hay más peticiones que capacidad de procesamiento (por unidad de
tiempo), la cola aumenta, si no disminuye.
● Al aumentar la cola, aumenta el tiempo de respuesta!!
● Si la cola se llena => el sistema se satura (denegación de servicio)
Sistemas Distribuidos 16
Problemas con la escalabilidad geográfica
● Muchos sistemas asumen una interacción síncrona cliente - servidor. La
latencia en una red WAN es mucho mayor que en LAN
● Los enlaces WAN fallan con más frecuencia
● Uso limitado de multicast
○ No está disponible en IPv4, solo en redes privadas. IPv6 lo soporta,
pero depende del proveedor de internet.
=> No podemos enviar una petición a un grupo y esperar la
respuesta. Esto disminuye la eficacia de algunos algoritmos, y
requiere usar mecanismos distintos a los usados en redes privadas
Sistemas Distribuidos 17
Problemas con la escalabilidad administrativa
● Distintas organizaciones pueden exigir distintas políticas, que podrían ser
incompatibles. Genera problemas en facturación, gestión y seguridad.
● Ejemplos:
○ Uso compartido de centros de computación. ¿ Cómo compartir
recursos costosos y limitados entre distintas organizaciones ?
○ Uso de instalaciones científicas por grupos de distintos países, por
ejemplo el CERN.
Algunos sistemas no presentan problemas de escalabilidad administrativa
● BitTorrent, Spotify, Skype. Permiten a los usuarios colaborar, sin
involucrar a entidades administrativas
Sistemas Distribuidos 18
Técnicas para el escalado
● Evitar latencia: Procesamiento en cliente y comunicación asíncrona
Sistemas Distribuidos 19
Técnicas para el escalado
● Dividir la computación y los datos entre distintas máquinas
○ Mover computación al cliente
■ Ejemplo: Uso javascript o WebAssembly en clientes web
○ Uso de servicios de nombres distribuidos (DNS)
■ Un mismo nombre puede tener varias direcciones IP
○ Uso de servicios de sistemas de información distribuidos
■ Ejemplo: Redes de distribución de contenido (CDN) en la web,
para contenidos que no cambian con frecuencia
Sistemas Distribuidos 20
Técnicas para el escalado
● Replicación y caché
○ Replicar servidores de archivos, bases de datos, etc.
○ Sitios web espejo
○ Cachés en navegador y proxies
○ Caché de archivos, en clientes y servidores
Sistemas Distribuidos 21
Técnicas para el escalado
● Principal problema con la replicación: Inconsistencia
○ ¿Qué ocurre cuando solo se modifica una de las copias ?
○ Mantener todas las copias consistentes requiere una sincronización
global en todas las copias en cada cambio
● La sincronización global dificulta crear soluciones a gran escala
● Si se diseña el sistema para permitir inconsistencias evitamos la
necesidad de sincronización global
○ Problema: Requiere diseñar las aplicaciones para tolerar
inconsistencias
○ Algunos sistemas ofrecen las dos alternativas, sincronización para
algunas operaciones, inconsistencias en otras menos sensibles
Sistemas Distribuidos 22
Errores comunes en el diseño
Produce fallos de diseño, que son costosos de solucionar, asumir que:
● Podemos confiar en la red
● La red es segura
● La red es homogénea
● La topología no cambia
● No hay latencia
● El ancho de banda es infinito
● No hay coste de transporte
● Hay un solo administrador
Sistemas Distribuidos 23
Tema 1. Introducción
● ¿ Qué es un sistema distribuido ?
● Objetivos de diseño
● Tipos de sistemas distribuidos
Sistemas Distribuidos 24
Tipos de sistemas distribuidos
● Sistemas distribuidos de alto rendimiento
● Sistemas distribuidos de información
● Sistemas distribuidos invasivos (Distributed Pervasive Systems)
○ Computación ubicua
○ Computación móvil
○ Redes de sensores
Sistemas Distribuidos 25
Computación paralela
● Los sistemas distribuidos de alto rendimiento comenzaron como
arquitecturas de computación paralelas
● Multiprocesador (o núcleos ) vs Multicomputer
Sistemas Distribuidos 26
Sistemas de memoria compartida
● Los sistemas multiprocesador o con varios núcleos son más fáciles de
programar que los multicomputador
● Los problemas se incrementan con el aumento en el número de núcleos
● En un sistema multicomputador se puede añadir un modelo de memoria
compartida, para que se programe como si fuera un multiprocesador
● Ejemplo:
○ Mapear mediante memoria virtual todos los nodos creando un único
espacio de memoria
○ Problema: Rendimiento. El bus de un sistema multinúcleo es mucho
más eficiente que la red => Apenas se usa este modelo
Sistemas Distribuidos 27
Cluster computing
● Varios nodos de alto rendimiento conectados por red local
● Nodo de gestión del cluster dedicado
● Los nodos de computación homogéneos, con el mismo S.O. y hardware
Sistemas Distribuidos 28
Grid Computing
● Evolución de cloud computing
○ Nodos heterogéneos
○ Dispersos
○ Pueden cubrir una zona amplia geográficamente
● Suelen usarse organizaciones virtuales, para simplificar la gestión. Cada
usuario pertenece a una organización, que es la que tiene asignados los
recursos
Sistemas Distribuidos 29
Arquitectura de Grid Computing
● Aplicaciones de una organización
● Collective: Acceso a los recursos
(búsqueda, replicación, etc.)
● Resource: Gestiona un único
recurso
● Connectivity: Comunicación y
transacciones. ej: Mover datos
entre recursos, autenticación, etc.
● Fabric: Interfaz con los recursos
locales: Bloqueo, estado, etc.
Sistemas Distribuidos 30
Cloud Computing
Sistemas Distribuidos 31
Cloud Computing
● Hardware: Procesadores, routers, etc. Esta capa está oculta a los clientes,
y suele ser auditada por servicios externos para ofrecer garantía de
seguridad
○ Se puede gestionar como HaaS (Hardware as a service), aunque no
se exponga a clientes externos, sino a la capa de infraestructura.
● Infraestructura: Técnicas de virtualización: Almacenamiento virtual y
servidores virtuales
● Plataforma: Mayor nivel de abstracción que la capa de infraestructura. El
cliente no tiene que preocuparse de actualizar y mantener el software de
la plataforma
● Aplicaciones: Software como servicio y aplicaciones de los clientes
Sistemas Distribuidos 32
Coste de los servicios cloud
● Hay muchos formas diferentes de pago en servicios cloud
○ En IaaS: Pago por hora de máquina virtual (varios tipos de máquina
con distintos precios) + tráfico
○ En PaaS: Habitualmente pago por uso: Tráfico entre servicios, tráfico
externo, computación, almacenamiento. PaaS se compone de varios
servicios, cada uno con su modelo de costes
● Ventajas de coste vs cluster privado
○ No hay coste de adquisición / amortización
○ No es necesario contratar personal para mantener el hardware (o el
software de los servicios en PaaS)
○ Podemos ajustar el coste al uso en cada momento: Ej: En momentos
de baja demanda reducir el número de nodos
Sistemas Distribuidos 33
Costes ocultos de los servicios Cloud
● Uso compartido de las máquinas => Posible exposición a fallos de
seguridad en la CPU, el Hypervisor, o el sistema operativo
● En PaaS
○ Los protocolos / APIs varían entre proveedores, y migrar puede tener
un coste considerable
○ Periódicamente el proveedor actualiza las APIs, y es necesario
modificar las aplicaciones para que puedan seguir funcionando
○ Los servicios pueden desaparecer!!!
● Es necesario diseñar los sistemas para minimizar los costes de
mantenimiento debido a cambios externos que no podemos controlar
Sistemas Distribuidos 34
Integración de las aplicaciones
● Las organizaciones tienen diversas aplicaciones en red. Conseguir que se
integren y comuniquen entre ellas puede ser una tarea compleja
● Cada aplicación en red se ejecuta en un servidor (o cluster, cloud, etc.), y
ofrece los servicios a clientes remotos
● La integración básica es combinar en el cliente las peticiones a las
diferentes aplicaciones, esperar los resultados, y presentarlos de forma
coherente al usuario.
● El siguiente paso es permitir comunicación entre aplicaciones =>
Integración empresarial (EAI = Enterprise Application Integration)
Sistemas Distribuidos 35
Integración empresarial: Transacciones anidadas
● Cada aplicación puede soportar transacciones. ¿Cómo podemos
combinarlas respetando las propiedades de la transacción?
● Primitivas de las transacciones
○ BEGIN_TRANSACTION
○ END_TRANSACTION (commit en bases de datos relacionales)
○ ABORT_TRANSACTION (rollback en bases de datos relacionales)
○ READ
○ WRITE
● Algunos sistemas imponen limitaciones para simplificar las transacciones
anidadas: Ej. Primero todas las operaciones READ, y después todos los
WRITE => Todas las dependencias son conocidas antes de WRITE
Sistemas Distribuidos 36
Transacciones
● Características de las transacciones (anidadas o no): Todo o nada (ACID)
○ Atómicas: Se comportan como ejecutadas en un instante
○ Consistencia: No violan las reglas de consistencia que hemos
impuesto en el sistema
○ Aislamiento (Isolation): No interfieren unas transacciones con otras
mientras se están ejecutando
○ Permanencia (Durable): Al terminar la transacción los cambios son
permanentes
Sistemas Distribuidos 37
Monitor de transacciones
TPM: Transaction Processing Monitor. Coordina la ejecución de las
transacciones en los distintos servidores del sistema distribuido
Sistemas Distribuidos 38
Sistemas distribuidos invasivos
● Nodos pequeños, móviles, como parte de un sistema mayor, que se
integran con el entorno del usuario
● Tres subtipos (no excluyentes)
○ Sistemas ubicuos: Se hace énfasis en que hay una interacción
continua con el usuario. Ejemplo: Sistemas inteligentes para el hogar
○ Computación móvil: Los dispositivos son móviles. Ejemplo. Wearables
○ Redes de sensores/actuadores: El énfasis está en la interacción de
los sensores y actuadores con el entorno
● IoT: Internet de las cosas
● Fog Computing / Edge Computing: Los datos de los sensores, etc., se
procesan en la red del usuario, o cerca de esta => menor latencia y evita
cuellos de botella en la red WAN
Sistemas Distribuidos 39
Sistemas ubicuos
Elementos principales:
● Distribución: Los dispositivos están conectados y son accesibles de forma
transparente
● Interacción: La interacción es lo más natural posible
● Contexto: El sistema usa información sobre el usuario para optimizar la
interacción
● Autonomía: Los dispositivos operan sin intervención humana, de forma
autónoma
● Inteligencia: El sistema en conjunto es capaz de gestionar un gran abanico
de acciones dinámicas e interacciones
Sistemas Distribuidos 40
Computación móvil
Características destacadas:
● Diferentes tipos de dispositivos móviles: Teléfonos inteligentes, tablets,
dispositivos GPS, sistemas de control remoto, wearables, etc.
● Al ser móviles, su localización cambia => puede requerir servicios de
descubrimiento para localizarlos y comunicar con los distintos elementos
● La comunicación es más compleja
○ No hay una ruta estable
○ No está garantizada => requiere diseños de comunicación tolerantes
a fallos
Sistemas Distribuidos 41
Redes de sensores
Características:
● Muchos sensores (decenas o miles)
● Simples: Poca capacidad de memoria, cómputo y comunicación
● Suelen usar baterías, placas solares, etc. El consumo es importante
Opciones (extremas)
● Los sensores envían los datos directamente a los servidores. Las
consultas se resuelven en los servidores
● Los sensores reciben las consultas y devuelven los resultados
Para ahorrar energía no suelen estar activos todo el tiempo, y envían
información cuando hay cambios y/o periódicamente
Sistemas Distribuidos 42
Bibliografía
Principalmente
● Andrew S. Tanenbaum, Maarten Van Steen, Distributed Systems:
Principles and Paradigms, ISBN: 0132392275.
● Se puede conseguir en PDF la tercera edición en [Link]
[Link]
Otras referencias de consulta:
● George Coulouris, Jean Dollimore, Tim Kindberg, Gordon Blair; Distributed
Systems: Concepts and Design (5th Edition), 2011
● MOHAMMAD HAMDAQA , LADAN TAHVILDARI; Cloud Computing
Uncovered: A Research Landscape, 2010, ebook.
● Lee Chao: Cloud Computing Networking, CRC Press, 2016
● Kai Hwang et al, Distributed and Cloud Computing, Elsevier, 2012
Sistemas Distribuidos 43