You are on page 1of 39

Sistemas Distribuidos

Tema 1 – Introducción

Diego Sevilla Ruiz

DITEC
Facultad de Informática

Murcia, octubre de 2009

Diego Sevilla Ruiz DITEC Facultad de Informática
Sistemas Distribuidos

Índice

I Sistemas Distribuidos: Introducción y Conceptos
I Sistemas Distribuidos: Arquitecturas
I Sistemas Grid
I Sistemas Operativos Distribuidos
I Introducción a los Patrones y las Herramientas

Diego Sevilla Ruiz DITEC Facultad de Informática
Sistemas Distribuidos

Sistemas Distribuidos

Un sistema distribuido es aquel en el que los componentes
localizados en computadores, conectados en red, comunican y
coordinan sus acciones únicamente mediante el paso de mensajes.
[Colouris, p.1].
I Concurrencia de los componentes
I Carencia de un reloj global
I Fallos independientes

Diego Sevilla Ruiz DITEC Facultad de Informática
Sistemas Distribuidos

Sistemas Distribuidos: Retos I Heterogeneidad I Redes I Hardware I Sistemas Operativos I Middleware I Extensibilidad I Seguridad I Escalabilidad I Tratamiento de Fallos I Concurrencia I Transparencia Diego Sevilla Ruiz DITEC Facultad de Informática Sistemas Distribuidos .

Diego Sevilla Ruiz DITEC Facultad de Informática Sistemas Distribuidos . lenguajes. Sistema Operativo.Sistemas Distribuidos: Heterogeneidad I Hardware. Redes I Razones: I Ingeniería – Diferentes personas eligen diferentes soluciones I Coste – Se compran recursos que se adapten a las necesidades I Aplicaciones antiguas – Imaginemos una aplicación de reserva de billetes en COBOL. Se tienen que amortizar las inversiones I Hardware antiguo – El hardware nuevo que se compra es necesariamente diferente.

e.) I Especificaciones públicas I Mecanismos de comunicación estandarizados I Utilizando hardware y software COTS Diego Sevilla Ruiz DITEC Facultad de Informática Sistemas Distribuidos . Internet. CORBA.Sistemas Distribuidos: Heterogeneidad (ii) I Herramientas: I Protocolos de comunicación I APIs estándar (Middleware) I Sistemas Abiertos (i. Globus etc.

Sistemas Distribuidos: Extensibilidad I Característica de un sistema que permite añadirle nuevas características y servicios de forma dinámica I Herramientas: I Sistemas Abiertos Diego Sevilla Ruiz DITEC Facultad de Informática Sistemas Distribuidos .

I No tratado en este curso Diego Sevilla Ruiz DITEC Facultad de Informática Sistemas Distribuidos .Sistemas Distribuidos: Seguridad I Elemento más importante y más complejo (conexiones y equipos físicamente distribuidos) I Necesidad de: I Autenticar a usuarios y recursos I Definir roles y patrones de acceso I Encriptar las comunicaciones I Seguridad física I Herramientas: I PKIs. etc. Servicios de Directorio. SSL.

etc. pero no se colapsa I Prever el desbordamiento de recursos tanto software como hardware I Evitar cuellos de botella de prestaciones I Soluciones: I Uso de software eficiente en tiempo y espacio I Patrones de diseño y de código (idiomas) para manejar eficientemente conexiones. Diego Sevilla Ruiz DITEC Facultad de Informática Sistemas Distribuidos .Sistemas Distribuidos: Escalabilidad I Un sistema es escalable si el aumento de demanda de servicios se puede suplir con una aportación de recursos I También: Un sistema puede ofrecer servicio a un número potencialmente muy grande de demandas: degrada el tiempo medio de respuesta. threads.

otros no) I Enmascaramiento de fallos (p. ¿Por qué? I Cuestiones: I Detección de fallos (unos detectables. es interesante que los sistemas distribuidos «toleren» fallos.Sistemas Distribuidos: Fallos I El rango de fallos en sistemas distribuidos es mayor que en cualquier otro sistema I Además. patrón Proxy) I Redundancia y votado I Disponibilidad I No tratado en profundidad en esta asignatura Diego Sevilla Ruiz DITEC Facultad de Informática Sistemas Distribuidos . ej.

Sistemas Distribuidos: Concurrencia I Normalmente los datos se comparten I Hay que establecer órdenes de acceso y procesos atómicos: Transacciones I Cuello de botella si los datos están almacenados en un sólo ordenador I Necesidad de transacciones distribuidas I Problemas de consistencia I A veces se necesitan coordinar varios procesos de varios ordenadores (barreras). La mala programación de estos procesos puede hacer el sistema muy ineficiente I No tratadas en profundidad en esta asignatura Diego Sevilla Ruiz DITEC Facultad de Informática Sistemas Distribuidos .

el desarrollo de aplicaciones distribuidas es similar al de aplicaciones convencionales I Delega en los niveles inferiores la complejidad y ofrece servicios fiables: I Transparencia de localización I Transparencia de concurrencia I Transparencia de replicación I Transparencia ante fallos I Transparencia .. Diego Sevilla Ruiz DITEC Facultad de Informática Sistemas Distribuidos ..Sistemas Distribuidos: Transparencia I El tópico más importante y el más difícil de conseguir I Con transparencia.

Arquitecturas – Sistemas Centralizados I No escalables I ¿Cómo añadir más recursos? Diego Sevilla Ruiz DITEC Facultad de Informática Sistemas Distribuidos .

Demonios remotos UNIX Diego Sevilla Ruiz DITEC Facultad de Informática Sistemas Distribuidos . herramientas básicas I P. ej. protocolos explícitos.Arquitecturas – Primeros sistemas distribuidos I Primeros programas distribuidos I Conexiones explícitas.

Arquitecturas – Primeros sistemas distribuidos (ii) I Servicios básicos por parte del Sistema Operativo I Direccionamiento I Sockets I Normalmente sólo implicaban a dos programas (Cliente/Servidor) Diego Sevilla Ruiz DITEC Facultad de Informática Sistemas Distribuidos .

Arquitecturas – Internet/World Wide Web/CGI Servidor HTTP Páginas SGBD HTML HTTP Internet HTTP Browser TCP/IP Prog. Servidor CGI SMTP Nivel 1 Nivel 2 Nivel 3 Diego Sevilla Ruiz DITEC Facultad de Informática Sistemas Distribuidos .

. Diego Sevilla Ruiz DITEC Facultad de Informática Sistemas Distribuidos .. ¿comprobación? I Protocolo CGI ad-hoc I Stateless (salvo con otros hacks como los cookies) I No soporte del servidor I etc.Arquitecturas – Internet/World Wide Web/CGI (ii) I Sockets I API de bajo nivel I ¿Gestión de errores? I No hay tipos.

Arquitecturas – 2 y 3 niveles Cliente Servidor Presentación Servidores BD Lógica del negocio Sistemas Legacy Acceso a datos etc. ... Diego Sevilla Ruiz DITEC Facultad de Informática Sistemas Distribuidos . Nivel 1 Nivel 2 Nivel 3. Nivel 1 Nivel 2 Servidor Cliente Lógica del negocio Servidores BD Presentación Acceso a datos Sistemas Legacy etc.

Clusters. I En la práctica. DB/2.TPMs. etc. se utilizan sistemas de n capas I La distribución: múltiples clientes por Web (thin clients) y un sistema de BBDD que está basado en clúster I Clústers de bases de datos/procedimientos proporcionados por paquetes comerciales (Oracle.) I Gestión de MUCHOS clientes: Transaction-Processing Monitors Diego Sevilla Ruiz DITEC Facultad de Informática Sistemas Distribuidos . etc.

Sistemas de más alto nivel: RPC I Primer sistema en diferenciar interfaz/implementación I Más alto nivel (comprobación de tipos) I Interfaz ⇒ Stubs/Skeletons I El interfaz se describe en C I El compilador de RPC genera los stubs y los skeletons I El programador realiza llamadas locales I Los stubs y skeletons realizan el trabajo remoto I TRANSPARENCIA LOCAL/REMOTA I Ejemplo: SUN RPC I Software intermedio: MIDDLEWARE Diego Sevilla Ruiz DITEC Facultad de Informática Sistemas Distribuidos .

pero basado en objetos I El middleware ahora toma más importancia Diego Sevilla Ruiz DITEC Facultad de Informática Sistemas Distribuidos .Objetos Distribuidos: CORBA/RMI I Muy parecido a RPC.

Message-Oriented Middleware I Síncrono/asíncrono I Normalmente Suscripción/Respuesta I Documentos XML ⇒ Mensajes I Loose Coupling Diego Sevilla Ruiz DITEC Facultad de Informática Sistemas Distribuidos .

Peer to Peer I Modelo más descentralizado: todos aportan por igual o en la medida de sus posibilidades I El MOM también soporta esta arquitectura I Ejemplos: JXTA Diego Sevilla Ruiz DITEC Facultad de Informática Sistemas Distribuidos .

Web Services/SOA/REST I Todo se hace accesible a través de servicios (web) I Protocolos «estándar»: HTTP. SOAP. WSDL I ¿Qué pasa con los callbacks? I ¿Manejo del estado? I No hay soporte del servidor Diego Sevilla Ruiz DITEC Facultad de Informática Sistemas Distribuidos . XML.

Componentes: CCM/EJB I Modelo contenedor I Entidades redistribuibles binarias I Unidades independientes de construcción de programas I Unidades binarias de desarrollo. prueba y ensamblado I Soporte run-time que permite instalar componentes I Ofrece todos los servicios a los componentes instalados I Aspect-Oriented Programming (AOP) I Generación automática de código para cada aspecto Diego Sevilla Ruiz DITEC Facultad de Informática Sistemas Distribuidos .

Componentes: CCM/EJB (ii) Diego Sevilla Ruiz DITEC Facultad de Informática Sistemas Distribuidos .

. autenticado. pero distribuidas Diego Sevilla Ruiz DITEC Facultad de Informática Sistemas Distribuidos .Modelos de Componentes Distribuidos I Los componentes se encuentran distribuidos I Diferentes organizaciones ofrecen componentes I Bien para descargar I Bien para utilizarlos remotamente bajo pago I Necesidad de un entorno seguro. p. Grid I Transparencia local/remota I Paletas de componentes similares a Delphi o VB.. ej.

posible sustituto futuro a internet ⇒ Red de servicios y computación I Cuestiones: I Seguridad: Sistemas basados en PKI y CAs globales I Problemas políticos: diferentes organizaciones. paradigmas. herramientas.Sistemas Grid I Ejemplifican la «Electrical Power Grid» americana I Conectividad total. incluso países I Escalabilidad I Descripción de servicios I Algoritmos... Diego Sevilla Ruiz DITEC Facultad de Informática Sistemas Distribuidos .

Sistemas Operativos Distribuidos I Sistemas Distribuidos versus Sistemas Operativos Distribuidos? I Polémica hace unos años I Principales diferencias: I Heterogeneidad (hw. etc.. Sistema fuertemente acoplado I Inmaduros en su comienzo I Ahora sería el momento de avanzar en la dirección I GNU/Hurd I CODA I Amoeba. so. MOSIX Diego Sevilla Ruiz DITEC Facultad de Informática Sistemas Distribuidos .) I Sistema débilmente acoplado vs.

Contexto. Cuestiones relevantes. tratan problemas en abstracto I En programación distribuida ⇒ poca experiencia I Los utilizaremos para aprender sobre cómo construir mejores aplicaciones distribuidas I Elementos: I Nombre.Introducción a los Patrones y Herramientas Patrones I Solución dada reiteradamente a un problema común I «Best practices» I Suben el nivel de abstracción. Problema. Solución I Lenguaje de Patrones: Conjunto de patrones relacionados que sirven para un fin común (POSA2) Diego Sevilla Ruiz DITEC Facultad de Informática Sistemas Distribuidos .

html Diego Sevilla Ruiz DITEC Facultad de Informática Sistemas Distribuidos .bell- labs. Coplien http://www1.Introducción a los Patrones y Herramientas (ii) Idioms I Patrones. pero de más bajo nivel I Asociados a un lenguaje.com/user/cope/Patterns/C %2b %2bIdioms/EuroPLoP98. normalmente C++ I No por ello menos importantes I Importantísimos por ejemplo en el mapping de C++ a CORBA I Ejemplo: «Scoped Locking» I C++ Idioms: James O.

return 1. int función(. if (condición) { // lo que sea pthread_mutex_unlock(&mutex).) { pthread_mutex_lock(&mutex). 325) (Resource Acquisition is Initialization) pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER..Introducción a los Patrones y Herramientas (iii) Scoped Locking (POSA2.. } Diego Sevilla Ruiz DITEC Facultad de Informática Sistemas Distribuidos . p. } pthread_mutex_unlock(&mutex). return 0.

) Diego Sevilla Ruiz DITEC Facultad de Informática Sistemas Distribuidos .Introducción a los Patrones y Herramientas (iv) Scoped Locking (cont.

} private: pthread_mutex_t* mutex_.) class SyncLock { public: SyncLock(pthread_mutex_t* m) { mutex_ = m. pthread_mutex_lock( mutex_ ). } ~SyncLock() { pthread_mutex_unlock( mutex_ ). } Diego Sevilla Ruiz DITEC Facultad de Informática Sistemas Distribuidos .Introducción a los Patrones y Herramientas (v) Scoped Locking (cont.

.) – RAII http://www. } Diego Sevilla Ruiz DITEC Facultad de Informática Sistemas Distribuidos . int función(. } return 0. if (condición) { // lo que sea return 1.net/raii/ pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER.Introducción a los Patrones y Herramientas (vi) Scoped Locking (cont..hackcraft.) { SyncLock sl(&mutex).

UML Dia (Gnome) Diego Sevilla Ruiz DITEC Facultad de Informática Sistemas Distribuidos .

UML (ii) Umbrello (KDE 3.2) Diego Sevilla Ruiz DITEC Facultad de Informática Sistemas Distribuidos .

UML (iii) SyncLock Diego Sevilla Ruiz DITEC Facultad de Informática Sistemas Distribuidos .

UML (iv) SyncLock Diego Sevilla Ruiz DITEC Facultad de Informática Sistemas Distribuidos .