Sistemas Distribuidos
Introducción
Sistemas Distribuidos y
Paralelismo
Un único procesador resuelve todas las tareas.
Motivaciones
9 Sistemas de predicción del tiempo del Área de EEUU y Canadá para los próximos 2 días:
Para predecir 1 hora
Con un solo procesador que pueda ejecutar 1 billón de cálculos por seg (109) tomará aprox.
2 x 1015 calc./109 calc.por seg = 2 x 106 segs
9 Problema de los N-Cuerpos en el espacio
Motivaciones: resolver grandes
problemas
9
Modelado y Predicción del clima
9
Problemas de astrofísica
9
Biología computacional
9
Base de datos geográficas
9
Modelados de Fluidos
Demandas de Mayor:
9Poder de computación (veloc., capacidad)
9Mayor flexibilidad (compartición, acceso remoto) Junto a:
9Los desarrollos tecnológicos de:
9Microelectrónica.
9Redes de comunicación de alta velocidad.
9Disminución de los costos.
9Necesidades de los usuarios:
9Aplicaciones más sofisticadas
9Administrativa y económicas
Computadoras Conectadas
Múltiples procesadores resuelven todas las
Sistemas Distribuidos
Tecnología de los Microprocesadores (´80) +
Tecnología de las Comunicaciones __________________________________
Sistemas de Alta Performance
SISTEMAS DISTRIBUIDOS
SISTEMAS PARALELOS
Permitir que varios usuarios trabajen en forma
cooperativa
Sistemas de Alta Performance
SISTEMAS DISTRIBUIDOS
SISTEMAS PARALELOS
Conjunto de tareas que trabajan simultáneamente para resolver un problema
Sistemas de Alta Performance
SISTEMAS DISTRIBUIDOS:
Otras definiciones
Sistema en el cual múltiples procesadores autónomos, posiblemente de diferente tipo, están interconectados por una subred de comunicación para interactuar de una manera
cooperativa en el logro de un objetivo global. [Lelann 1981]
Sistema en el cual componentes de hardware y software, localizadas en computadores de red, se comunican y
Sistemas de Alta Performance
SISTEMAS DISTRIBUIDOS:
Otras definiciones
Un SSDD es una colección de computadoras
independientes, interconectadas vía una red, que son capaces de colaborar en una tarea. Las computadoras son
consideradas independientes y no tienen memoria compartida o espacio de ejecución de programas.
[Liu 2004]
Sistemas distribuidos
•
Estas definiciones tiene las siguientes
consecuencias:
- Concurrencia
- Inexistencia de un reloj global
- Fallos Independientes
•
Ejemplos
- Internet
- Intranets
Internet
intranet
ISP
desktop computer:
backbone
satellite link
server:
network link:
Intranets
•
Porción de Internet administrada
separadamente.
•
Utilizan la tecnologías de Internet (capas de
software) para el transporte de datos y servicios.
•
Suelen estar conectados a Internet a través de
un cortafuegos (firewall)
•
En algunos casos críticos no se conectan a
Computación móvil y/o ubicua
• Se caracteriza porque sus elementos no están conectados todo el tiempo a la red y cambia
continuamente el lugar desde el que se conectan
• Tipos de dispositivos
- Computadoras portátiles
- Dispositivos de mano (PDA’s, teléfonos móviles, buscapersonas y videocámaras o cámaras digitales)
- Dispositivos que se pueden llevar puestos como relojes inteligentes, etc.
Enfatiza en los siguientes aspectos:
9 La computación usa múltiples recursos que están situados físicamente dispersos.
9 En un sistema distribuido se corren múltiples aplicaciones a la vez. Las aplicaciones pueden pertenecer a diferentes
usuarios.
9 Un sistema distribuido es a menudo heterogéneo.
9 Un sistema distribuido no tiene una memoria compartida, al menos a nivel de hardware.
Enfatiza en los siguientes aspectos:
9 Una aplicación es dividida en subtareas que son resueltas simultáneamente (generalmente en forma fuertemente acopladas)
9 Una aplicación es considera a la vez y el objetivo es la velocidad de procesamiento de esta única aplicación
9 Los programas ejecutan en arquitecturas homogéneas
Tienen propiedades que los diferencia:
C. Paralelas dividen una aplicación en tareas
que son ejecutadas al mismo tiempo.
C. Distribuidas las tareas relacionadas o no
son ejecutadas en diferentes ubicaciones
usando diferentes recursos.
S. Paralelos vs. S. Distribuidos
Características comunes:
9 Múltiples procesadores
9 Los procesadores están interconectados por alguna red
9 Múltiples procesos (actividades computacionales) están en progreso al mismo tiempo y cooperan unos con otros (el
S. Paralelos vs. S.
Distribuidos
Desde los medidos de los ´90 se ha incrementado la convergencia de ambas áreas:
9Las áreas incrementalmente usan las mismas arquitecturas
9Muchos aspectos de paralelismo y distribución son intercambiables o comunes e incrementalmente han comenzado a ser investigados juntos
S. Paralelos vs. S.
Distribuidos
Ventajas de los S. Distribuidos
9 Velocidad: Un sistema distribuido puede alcanzar mayor poder de
computación que una única máquina.
9 Confiabilidad: Si una máquina cae, el sistema aún puede continuar en operación.
9 Compartir datos: Admitir que varios usuarios accedan a datos comunes.
9 Compartir dispositivos: Admitir que varios usuarios accedan a recursos escasos o
caros.
9 Comunicación: Permitir una sencilla comunicación.
9 Flexibilidad: Distribuir la carga de trabajo entre las máquinas disponibles.
9 Escalabilidad: Se pueden agregar recursos a
Desventajas de los S.
Distribuidos
9
Seguridad: Un sistema distribuido debe tener
mecanismos para asegurar sus datos.
9
Networking: El sistema depende del desempeño
de la red.
9
Software: Existe poco software para los sistemas
existentes.
9
Muchos puntos de fallos: debido a que son
Desafíos de los S. Distribuidos
9
Performance
9
Heterogeneidad
9
Extensibilidad
9
Escalabilidad
9
Conectividad
9
Seguridad
9
Confiabilidad
Desafíos de los S. Distribuidos
9
Transparencia
9
De acceso
9
De ubicación
9
De Falla
9
De Replicación
9
De almacenamiento
9
De Migración
9
De re-ubicación
Heterogeneidad
•
La heterogeneidad se aplica en los siguientes
elementos:
- Redes
- Hardware de computadores
- Sistemas operativos
- Lenguajes de programación
Heterogeneidad
Middleware
: es el estrato de software que
provee una abstracción de programación,
así como un enmascaramiento de la
heterogeneidad subyacente de las redes,
hardware, sistemas operativos y lenguajes
de programación. Ejemplo: Corba, Java
Middleware
• Existen diversos tipos de middleware
- Para Base de datos: ODBC, JDBC, SQLJ, SQL * NET Oracle
- Para OLTP (Procesamiento de transacciones) : ATMI, WS Tuxedo, TIP Microsoft, OTS de CORBA
- Para Groupware: MAPI, VIM, JavaMail, Workflow y llamadas de Lotus Notes
- Para Objetos: CORBA/IIOP de OMG, COM+ Microsoft, RMI sobre IIOP de JavaSoft
- Para Internet: HTTP, CGI, XML, SET
Heterogeneidad
•
Heterogeneidad y código móvil
- Código Móvil: código que puede enviarse
desde un computador a otro y ejecutarse
en este último.
Extensibilidad
•
Es la característica que determina si el
sistema puede extenderse de varias
maneras. Un sistema puede ser abierto o
cerrado con respecto a extensiones de
hardware o de software.
•
Para lograr la extensibilidad es
Extensibilidad
•
Los Sistemas Distribuidos Abiertos pueden
extenderse a nivel de hardware mediante la
inclusión de computadoras a la red y a nivel de
software por la introducción de nuevos servicios
y la reimplementación de los antiguos.
Escalabilidad
•
Se dice que un sistema es escalable si conserva
su efectividad cuando ocurre un incremento
significativo en el número de recursos y en el
número de usuarios.
•
El diseño de SSDD escalables presenta los
siguientes retos:
- Control de costo de los recursos físicos
: para
que un sistema con
n
usuarios sea escalable, la
cantidad de recursos físicos necesarios para
Escalabilidad
Controlar la degradación del rendimiento:
-
Ejemplo: Los algoritmos que emplean
estructuras jerárquicas se comportan mejor
frente al crecimiento de la escala, que los
algoritmos que emplean estructuras lineales.
-
Evitar cuellos de botella:
los algoritmos deberían
ser descentralizados
.
Seguridad
La seguridad tiene tres componentes:
- Confidencialidad: protección contra individuos
no autorizados
- Integridad: protección contra la alteración o
corrupción
Seguridad
Existen dos desafíos que no han sido
resueltos en su totalidad:
Tratamiento de Fallos
•
Detección de fallos
:
- Ejemplo: Se pueden utilizar sumas de
comprobación (checksums) para detectar
datos corruptos en un mensaje.
•
Enmascaramiento de fallos
: Ejemplos:
- Los mensajes pueden retransmitirse
Tratamiento de Fallos
•
Tolerancia de fallos:
los programas clientes de
los servicios pueden diseñarse para tolerar
ciertos fallos. Esto implica que los usuarios
tendrán también que tolerarlos.
•
Recuperación de fallos:
implica el diseño de
software en el que, tras una caída del servidor,
el estado de los datos puede reponerse o
retractarse (rollback) a una situación anterior.
•
Redundancia:
emplear componentes
Concurrencia
•
Existe la posibilidad de acceso concurrente a un
mismo recurso. La concurrencia en los
servidores se puede lograr a través de threads.
•
Cada objeto que represente un recurso
compartido debe responsabilizarse de
garantizar que opera correctamente en un
entorno concurrente.
•
Para que un objeto sea seguro en un entorno
concurrente, sus operaciones deben
Transparencia
•
Transparencia de acceso: permite acceder a los
recursos locales y remotos empleando
operaciones idénticas.
•
Transparencia de ubicación: permite acceder a
los recursos sin conocer su localización.
•
Transparencia de concurrencia: permite que
Transparencia
•
Transparencia de replicación: permite replicar
los recursos sin que los usuarios y los
programadores necesiten su conocimiento.
•
Transparencia frente a fallos: permite ocultar
fallos.
•
Transparencia de movilidad: permite la
reubicación de recursos y clientes en un sistema
sin afectar la operación de los usuarios y los
Transparencia
•
Transparencia de rendimiento: permite
reconfigurar el sistema para mejorar el
desempeño según varíe su carga.
•
Transparencia al escalado: permite al sistema y
a las aplicaciones expandirse en tamaño sin
Ventajas de los S.
Paralelos
9 Velocidad: Un sistema paralelo puede
resolver un problema con mayor velocidad que una única
computadora.
9 Compartir de datos: Varias tareas acceden a datos comunes.
9 Diferentes Arquitecturas: Aceptan diferentes arquitecturas: de pasaje de mensaje o de memoria
compartida.
9 Comunicación: Depende de la arquitectura.
S. Distribuidos y
Redes de Computadoras
Servicios SON Kernel Servicios SON Kernel Servicios SON Kernel Aplicaciones Distribuidas
Kernel Kernel Kernel
Aplicaciones Distribuidas Sistema Operativo Distribuido
Sistema Operativo de Redes
S. Distribuidos y
Redes de Computadoras
Servicios SON Kernel Servicios SON Kernel Servicios SON Kernel Aplicaciones Distribuidas
Servicios de Middleware Middleware
Provee:
9 Transparencia 9 Portabilidad
S. Distribuidos y
Redes de Computadoras
Sistemas Operativo de Red:
9Propio S.O.
9Acceso remoto a recursos.
9No tolerancia a las fallas.
9No transparente.
Sistemas Operativo Distribuido:
9Distribuido en los nodos.
9Administración de recursos.
9Transparencia de acceso.
Trampas – suposiciones que no
son ciertas
• Cuando se diseña un SSDD se suponen premisas que son erróneas (Peter Deutsh)
- La red es confiable - La red es segura
- La red es homogénea - La topología no cambia - La latencia es igual a cero - El ancho de banda es infinito
- El costo del transporte es igual a cero
Tipos de SSDD (Tanembaum)
•
Sistemas distribuidos de cómputo
- Sistemas de cómputo en cluster
- Sistemas de cómputo en grid
•
Sistemas distribuidos de información
- Sistema de procesamiento de transacciones
- Integración de aplicaciones empresariales
•
Sistemas distribuidos masivos
- sistemas caseros
- sistemas electrónicos para el cuidado de la
salud
Sistemas distribuidos de cómputos
• Sistemas de cómputos en cluster
Adquirieron popularidad cuando mejoró relación precio-rendimiento de las PCs.
Un cluster es un conjunto de dos o más computadoras acopladas en red que comparten un subsistema de discos, y un software que trabajan como un sistema
único garantizando el funcionamiento normal del sistema aunque falle una de las computadoras.
La computación en cluster se utiliza para la
programación en paralelo donde un solo programa (de cálculo intensivo) corre paralelamente en múltiples
Cluster
Cluster de Google
•
Se estima en cada centro
de datos tiene de 10 a 12
cluster con 2000
maquinas por cluster.
Sistema de cómputos en Grid
• Una característica del cómputo basado en cluster es su homogeneidad. Todas tienen el mismo sist. Operativo y en esencia son las mismas.
• Los sist. basados en Grid tienen alto grado de heterogeneidad
• Permite compartir recursos en forma coordinada y
controlada para resolver problemas en organizaciones multiinstitucionales dinámicas.
• Complementa las tecnologías existentes de computación distribuida.
• Las organizaciones virtuales por medio de Grid hacen posible la existencia de grupos diversos de
Capas de la arquitectura Grid ( Foster) y su
relación con las capas de Internet
• La capa más baja de fabricación proporciona interfaces para recursos locales ubicados en un sitio específico
• La capa de conectividad consiste en protocolos de
comunicación para dar soporte a las transacciones del grid
• La capa de recursos es responsable de la administración de un solo recurso
• La capa colectiva se encarga de manipular el acceso a múltiples recursos
Sistema de cómputo en grid
Sistemas distribuidos de información
• Muchas de las soluciones de middleware existentes son el resultado del trabajo con la infraestructura con la cual es más fácil integrar aplicaciones dentro de un sistema de información corporativa.
• Podemos distinguir varios niveles donde la integración tomó parte.
• La integración a nivel más bajo permitía a los clientes alojar cierto número de peticiones dentro de una sola petición y ejecutarla como transacción distribuida
• Mientras más sofisticadas se hicieron las aplicaciones se fueron separando de manera gradual en
componentes independientes
Sistemas de procesamiento de
transacciones
• En la práctica en una base de datos las operaciones se llevan a cabo generalmente en forma de transacciones
• Programar utilizando transacciones requiere primitivas de transacción especiales que deben ser
proporcionadas ya sea por el sistema distribuido
subyacente o por el lenguaje del sistema en tiempo de ejecución.
• Ejemplos típicos de primitivas de transacción son: begin_transaction, read, write, etc.
• La lista de primitivas puede variar: por ej. Para un
sistema de correo existen primitivas para enviar y recibir correos, pero en un sistema contable aparecen otras
primitivas.
Sistemas de procesamiento de
transacciones
• Las transacciones cumplen cuatro características: 1. atómicas: para el mundo exterior, la transacción es
indivisible
2. consistentes: la transacción no viola sistemas invariantes
3. aisladas: las transacciones concurrentes no interfieren entre sí.
4. durables: una vez que se confirma una transacción, los cambios son permanentes
Surgen problemas con las transacciones distribuidas o anidadas. Para ello se suele utilizar el monitor de transacciones, cuya tarea es la de permitirle a una aplicación el acceso a múltiples servidores/base de datos ofreciendo un modelo de programación
Integración de aplicaciones
empresariales
• Conforme las aplicaciones fueron desligándose de las bases de datos sobre las que se desarrollaron, la
necesidad de que las instalaciones integraran
aplicaciones independientes de sus base de datos se volvió evidente.
• Los componentes de las aplicaciones debían ser
capaces de comunicarse entre sí de manera directa y no solo mediante un comportamiento de petición respuesta soportado por sistemas de procesamiento de
transacciones.
Sistemas distribuidos masivos
•
Los SSDD anteriores tiene como característica
la estabilidad: los nodos están fijos y tienen una
conexión más o menos permanente.
•
La situación se ha vuelto más compleja con los
sistemas móviles y embebidos.
•
En estos casos un error es difícil de enmascarar
o recuperarse del mismo.
Sistemas caseros
• Estos sistemas consisten en una o más PC’s que integran aparatos electrónicos de consumo como
televisores, equipos de audio y video, dispositivos para juegos, smartphones, PDAs, etc.
• Existe un área de conocimiento llamada domótica que trata estos temas.
• Desde la perspectiva de sistema existen varios retos a vencer: reconfiguración automática del sistemas (ayuda Plug and play universal); administración sencilla del
espacio personal; sincronización de documentos y tareas.
Sistemas electrónicos para el cuidado
de la salud
• Son sistemas basados en dispositivos electrónicos (personales) utilizados para el cuidado de la salud.
• El objetivo es dar seguimiento de bienestar a personas asistidas para que el dispositivo se ponga en contacto con el médico en caso de dificultad.
• Los sistemas para el cuidado de la salud están
equipados con diversos sensores en una BAN ( body-area network) de preferencia inalámbrica.
Redes de monitoreo
• Estas redes incluyen redes de sensores, mesh, controladores, vigilancia, etc.
• Las redes mesh forman una colección de nodos (fijos) que se comunican a través de vínculos inalámbricos.
• Una red de sensores típica está constituida de decenas o centenas de nodos relativamente pequeños, usan
baterías y la comunicación es inalámbrica. Los criterios de diseño apuntan a la eficiencia en el consumo.
Redes de monitoreo
• Para organizar una red de monitoreo como una BD distribuida existen 2 posibilidades:
- Los sensores no cooperan sino que solo envían sus datos a la BD centralizada
- Se envían consultas a sensores importantes y se dejan que cada sensor calcule una respuesta, ello requiere que el operador agregue las respuestas devueltas.
Partes de los problemas se han solucionado con TinyOS y TinyDB.
Para hacer las cosas eficientemente, las consultas son más espaciadas durante un período de tiempo de tal manera que los recursos de red y la energía se