Programación Distribuida
Programación Distribuida
Programación Distribuida
Bibliografía
1
Contenido
Motivación
Definición de Sistema Distribuido (SD).
Razones para distribuir.
Aspectos importantes a considerar.
Problemas comunes
Retos
Ejemplos
Motivación
Sistemas de
Cómputo Distribuido
Integración
Integración ≠ Centralización
2
¿Qué es un SD?
No es algo trivial de definir…....
Leslie Lamport una vez dijo: “A distributed system is one in
which the failure of a computer you didn’t even know existed
can render your own computer unusable”.
“Síntomas” de distribución:
• Geografía: Sus componentes suelen estar en sitios diferentes
• Multiproceso (concurrencia): El hardware permite el progreso
simultáneo de varias actividades (varias CPUs, con memoria local,
etc.).
• Interconexión: Permite la comunicación entre las actividades.
• Compartición: Uso compartido de recursos, información, etc.
• Tolerancia a fallos: Busca soluciones resistentes en caso de fallo
(nota: las comunicaciones también pueden fallar).
SD: Definiciones
3
SD: Nuestra perspectiva
• Conjunto de procesadores sin memoria común conectados por una
red
– Sistema débilmente acoplado
– No existe un reloj común
– Dispositivos de E/S asociados a cada procesador
– Fallos independientes de componentes del SD
– Carácter heterogéneo
– Buscan un objetivo común
Host / Terminal
4
Razones para Distribuir
Incremento del poder de procesamiento: procesadores
independientes trabajan con la misma tarea
Sistemas distribuidos conformados por varias microcomputadoras
pueden tener poder de procesamiento que difícilmente una
supercomputadora tendrá.
5
Dificultades
Lograr un acceso eficiente, presumiblemente óptimo.
Transformar e integrar datos de diferentes tipos de
nodos.
Distribuir datos de una manera óptima.
Controlar el acceso a datos.
Soportar la recuperación de errores en todo el sistema
distribuido de manera eficiente y segura.
Asegurar que los sistemas locales y globales
permanezcan como una imagen fiel del mundo real.
6
Cómputo Centralizado vs
Distribuido
Sistema Distribuido vs
Sistemas Paralelos
• Algunos autores indican que los SD son subconjunto de los SP, sin embargo no
es algo que todos acepten. En ambos tipos de sistemas se pueden emular cosas
como paso de mensajes y memoria compartida
7
Sistema distribuido heterogéneo
8
Desventajas de los Sistemas
Distribuidos
• Seguridad y confidencialidad
9
Objetivos de un Sistema
Distribuido
– Transparencia.
– Fiabilidad.
– Rendimiento.
– Capacidad de crecimiento.
– Flexibilidad.
– Seguridad.
Transparencia
10
Fiabilidad
Rendimiento
Rendimiento para un servicio multiusuario:
– Objetivo: Rendimiento no peor que un sistema centralizado
Factores:
• Uso de esquemas de caching
– Intentar que muchos accesos se hagan localmente
11
Capacidad de
crecimiento
Diseño de un sistema distribuido debe evitar “cuellos de botella”:
– Componentes centralizados
– Tablas centralizadas
– Algoritmos centralizados
Flexibilidad
SOD debe ser adaptable:
– facilidad para incorporar cambios y extensiones al
sistema
12
Componentes de un Sistema
Distribuido
– Servicios de comunicación.
– Sistemas de archivos.
– Servicio de nombres.
– Servicios de sincronización y coordinación.
– Memoria compartida distribuida.
– Gestión de procesos.
– Servicio de seguridad.
Servicios de comunicación
• Modelos de interacción:
– Cliente/servidor (2-niveles, 3-niveles o n-niveles)
– Peer-to-peer: Equilibrio de roles.
– Intermediarios: Proxy, Dispacher, Caches, ...
– Comunicación en grupo (Multicast)
– Código móvil.
• Tecnologías de comunicación:
– Paso de mensajes: sockets.
– Llamada a procedimientos remotos (RPC).
– Invocación de métodos remotos (RMI).
– Tecnologías de objetos distribuidos: CORBA, DCOM, EJB
- Servicios Web
13
Sistemas de Archivos
Distribuidos
• Caching y replicación
Servicio de nombres
Comprende:
– Servicio de nombres (páginas blancas): DNS, COS-
Naming (CORBA).
– Servicio de directorio (páginas amarillas): X.500, LDAP,
Active Directory de Windows, UDDI (Web Services).
14
Servicios de Sincronización y
Coordinación
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.
Basada en objetos.
Modelos de coherecia
15
Gestión de Procesos
• Planificación de procesos:
Planificación interna.
Planificación global.
• Migración de procesos
Equilibrado de carga.
Aprovechamiento de máquinas inactivas.
Servicio de Seguridad
16
Sistemas Operativos
Distribuidos (SOD)
Definición: Un sistema operativo distribuido ejecuta sobre un
sistema distribuido haciendo creer a los usuarios que se trata de
un sistema centralizado
– single system view o uniprocesador virtual
17
Sistemas Operativos para SMPs
Definición: [Cho97]
Red de computadoras débilmente acopladas en las que no
existe un control externo directo sobre el hardware/software de
cada computadora para la compartición de recursos.
Características:
• No dan la visión de uniprocesador virtual (máquinas
independientes).
• Cada una ejecuta una copia de sistema operativo
(posiblemente distinto).
• Sistema operativo convencional + utilidades de red.
• Protocolos de comunicación para intercambio de recursos y
acceso a servicios de alto nivel.
• Desde rcp/rlogin hasta Open Network Computing (ONC) de
Sun.
18
Sistemas Operativos Distribuidos
(SOD)
• Primeros SO de red:
- Incluir servicios de red en SO convencional
- Ejemplo: UNIX 4BSD (≈1980)
• Paulatina incorporación de más funcionalidad:
- ONC de Sun (≈ 1985): incluye NFS, RPC, NIS
• Primeros SOD:
- Nuevos SO pero basados en arquitecturas monolíticas
- Ejemplo: Sprite de la Universidad de Berkeley (≈ 1988)
• SOD basados en microkernel. Ejemplos:
- Mach de CMU (≈ 1986)
- Amoeba diseñado por Tanenbaum (≈ 1984)
- Chorus de INRIA en Francia (≈ 1988)
• Tendencia actual: Entornos distribuidos ---> Middleware
19
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:
Middlewares Servicios
Web
RPC
Sockets
Tiempo
SD: Retos
1. Heterogeneidad de:
Infraestructura de la red subyacente,
Computadoras hardware y software (ej. Sistemas operativos,
comparar sockets UNIX y llamadas Winsock),
Lenguajes de programación (en particular, representación de datos).
Algunas metodologías
Middleware (ej. CORBA): trasparencia de red, heterogeneidad de hardware
y software y lenguajes de programación.
Código móvil (ej. JAVA): transparencia desde el hardware, software y
heterogeneidad de lenguajes de programación mediante el concepto de
máquina virtual.
2. Apertura
Asegura la extensibilidad y mantenibilidad del sistema
Adherencia a interfaces estándar
3. Seguridad
Privacidad
Autentificación
Disponibilidad
Etc.
20
SD: Retos
5. Manejo de fallas
Detección (puede ser imposible)
Enmascarar
Retrasmisión
Redundancia en almacenamiento de datos
Tolerancia
Manejo de excepciones (ej. Pausas en esperas de respuestas de la
web)
Redundancia
encaminadores redundantes en la red
Replicación de tablas de nombres en múltiples dominios de servidores
de nombres
6. Concurrencia
Planificación consistente de hilos concurrentes (con lo que se
mantiene la dependencia, ej. En transacciones concurrentes)
Se evitan problemas de deadlocks y livelocks.
SD: Retos
7. Transparencia: ocultamiento de la heterogeneidad y
distribución natural de los sistemas, lo cual aparece ante el
usuario como un solo sistema.
Clasificación de la trasparencia (de acuerdo al ISO)
Acceso: a recursos locales y remotos utilizando las mismas operaciones
Localización: acceso sin conocer la ubicación de los recursos
Ej. Direcciones URLs, e-mails.
Concurrencia: permite a varios procesos operar concurrentemente utilizando
recursos compartidos de manera consistente
Replicación: utiliza recursos replicados como si fueran una sola instancia
Fallas: permite que los programas completen sus tareas a pesar de fallas ej.
Retransmisión de e-mails
Movilidad: permite mover recursos
Desempeño: adopción de los sistemas para variar situaciones de carga sin que
el usuario lo perciba
Escalamiento: permite que el sistema y las aplicaciones se expandan sin
necesidad de cambiar estructuras o algoritmos.
21
Ejemplos
1. La Internet
Redes heterogéneas de computadoras y aplicaciones
Implementación mediante la pila de protocolos de Internet
Configuración típica:
intranet
ISP
backbone
satellite link
desktop computer:
server:
network link:
Ejemplos
22
Ejemplos
3. Intranets
Redes localmente administradas
Generalmente propietarias (ej. Red del campus universitario)
Interfaces con la Internet
Cortafuegos
Proporciona servicios interna y externamente.
email server Desktop
computers
print and other servers
Local area
Web server network
email server
print
File server
other servers
the rest of
the Internet
router/firewall
Ejemplos
4. Sistemas de cómputo móvil
Sistemas de telefonía celular (ej. GSM, UMTS, LTE)
Recursos que se comparten
Radio frecuencias
Tiempos de transmisión en una frecuencia (UMTS: multiplexado)
El móvil en movimiento
Computadoras portátiles
LANs inalámbricas
Dispositivos smartphones, tablets, handheld, PDAs, etc.
Dispositivos portátiles
Internet
Mobile
phone
Printer Laptop
Camera Host site
23
Ejemplos
5. Sistemas embebidos
Ejemplos
6. Sistemas de telefonía
Ejemplos
POTS
ISDN
Redes inteligentes
Redes inteligentes avanzadas
Compartición de recursos
Redes
Administración
Teléfonos
7. Administración de la red
Administración de recurso de la red
Estado: estatus de los recursos y conexiones
Ejemplo
SNMP
24
Ejemplos
8. Sistemas de Archivos en Red
Ejemplos
10. Cluster
25
Ejemplos
26