Está en la página 1de 47

Sistemas Distribuidos

Sesin 1 Introduccin a los Sistemas Distribuidos


Diego Sevilla Ruiz
DITEC
Facultad de Informtica

Murcia, septiembre 2010

Diego Sevilla Ruiz (DITEC Facultad de Informtica)

Sistemas Distribuidos

Murcia, septiembre 2010

1 / 47

ndice

Sistemas Distribuidos: Introduccin y Conceptos


Sistemas Distribuidos: Arquitecturas
Sistemas Cloud
Sistemas Operativos Distribuidos
Introduccin a los Patrones y las Herramientas

Diego Sevilla Ruiz (DITEC Facultad de Informtica)

Sistemas Distribuidos

Murcia, septiembre 2010

2 / 47

Sistemas Distribuidos (enfoque clsico)

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].
Concurrencia de los componentes
Carencia de un reloj global
Fallos independientes

Diego Sevilla Ruiz (DITEC Facultad de Informtica)

Sistemas Distribuidos

Murcia, septiembre 2010

3 / 47

Sistemas Distribuidos (actualmente)

Uso ubcuo de Internet


(y de sus protocolos)

Sistemas abiertos
La consistencia fuerte slo se necesita en algunos casos
En la mayora de los casos, se puede tolerar una consistencia
eventual (W. Vogels. Eventually Consistent. ACM Queue vol. 6, no. 6,
December 2008.)1

Uso ubcuo de cachs, sistemas aboertos, protocolos estndar


(HTTP) homogeneizacin de datos y procesamiento, Map/Reduce,
paralelismo funcional, automtico, REST, etc.
Aqu nos centraremos

http://queue.acm.org/detail.cfm?id=1466448

Diego Sevilla Ruiz (DITEC Facultad de Informtica)

Sistemas Distribuidos

Murcia, septiembre 2010

4 / 47

Sistemas Distribuidos: Retos

Heterogeneidad
Redes
Hardware
Sistemas Operativos
Middleware

Extensibilidad
Seguridad
Escalabilidad
Tratamiento de Fallos
Concurrencia
Transparencia

Diego Sevilla Ruiz (DITEC Facultad de Informtica)

Sistemas Distribuidos

Murcia, septiembre 2010

5 / 47

Sistemas Distribuidos: Heterogeneidad

Hardware, Sistema Operativo, lenguajes, Redes


Razones:
Ingeniera Diferentes personas eligen diferentes soluciones
Coste Se compran recursos que se adapten a las necesidades
Aplicaciones antiguas Imaginemos una aplicacin de reserva de
billetes en COBOL. Se tienen que amortizar las inversiones
Hardware antiguo El hardware nuevo que se compra es
necesariamente diferente.

Diego Sevilla Ruiz (DITEC Facultad de Informtica)

Sistemas Distribuidos

Murcia, septiembre 2010

6 / 47

Sistemas Distribuidos: Heterogeneidad (ii)

Herramientas:
Protocolos de comunicacin
APIs estndar (Middleware)
Sistemas Abiertos (i.e. CORBA, Internet, etc.)
Especificaciones pblicas
Mecanismos de comunicacin estandarizados
Utilizando hardware y software COTS

Diego Sevilla Ruiz (DITEC Facultad de Informtica)

Sistemas Distribuidos

Murcia, septiembre 2010

7 / 47

Sistemas Distribuidos: Extensibilidad

Caracterstica de un sistema que permite aadirle nuevas


caractersticas y servicios de forma dinmica
Herramientas:
Sistemas Abiertos
Loose Coupling

Diego Sevilla Ruiz (DITEC Facultad de Informtica)

Sistemas Distribuidos

Murcia, septiembre 2010

8 / 47

Sistemas Distribuidos: Seguridad

Elemento ms importante y ms complejo (conexiones y equipos


fsicamente distribuidos)
Necesidad de:
Autenticar a usuarios y recursos
Definir roles y patrones de acceso
Encriptar las comunicaciones
Seguridad fsica

Herramientas:
PKIs, SSL, Servicios de Directorio, Proxys anonimizadores, funciones
de hash, etc.

No tratado en profundidad en esta asignatura

Diego Sevilla Ruiz (DITEC Facultad de Informtica)

Sistemas Distribuidos

Murcia, septiembre 2010

9 / 47

Sistemas Distribuidos: Escalabilidad


Un sistema es escalable si el aumento de demanda de servicios se
puede suplir con una aportacin de recursos
Tambin: Un sistema puede ofrecer servicio a un nmero
potencialmente muy grande de demandas: degrada el tiempo medio
de respuesta, pero no se colapsa
Prever el desbordamiento de recursos tanto software como hardware
Evitar cuellos de botella de prestaciones

Soluciones:
Uso de software eficiente en tiempo y espacio
Patrones de diseo y de cdigo (idiomas) para manejar eficientemente
conexiones, threads, etc.
Uso de cachs, consistencia eventual, etc.
Uso de algoritmos altamente paralelizables (programacin funcional,
lgica, algoritmos Map/Reduce), etc.

Diego Sevilla Ruiz (DITEC Facultad de Informtica)

Sistemas Distribuidos

Murcia, septiembre 2010

10 / 47

Sistemas Distribuidos: Fallos

El rango de fallos en sistemas distribuidos es mayor que en


cualquier otro sistema
Adems, es interesante que los sistemas distribuidos toleren
fallos. Por qu?
Cuestiones:
Deteccin de fallos (unos detectables, otros no)
Enmascaramiento de fallos (p. ej. patrn Proxy)
Redundancia y votado
Disponibilidad
Idempotentibilidad

No tratado en profundidad en esta asignatura

Diego Sevilla Ruiz (DITEC Facultad de Informtica)

Sistemas Distribuidos

Murcia, septiembre 2010

11 / 47

Sistemas Distribuidos: Concurrencia

Normalmente los datos se comparten


Hay que establecer rdenes de acceso y procesos atmicos:
Transacciones
Cuello de botella si los datos estn almacenados en un slo
ordenador
Necesidad de transacciones distribuidas
Problemas de consistencia
A veces se necesitan coordinar varios procesos de varios
ordenadores (barreras). La mala programacin de estos procesos
puede hacer el sistema muy ineficiente
No tratadas en profundidad en esta asignatura

Diego Sevilla Ruiz (DITEC Facultad de Informtica)

Sistemas Distribuidos

Murcia, septiembre 2010

12 / 47

Sistemas Distribuidos: Transparencia

El tpico ms importante y el ms difcil de conseguir


Con transparencia, el desarrollo de aplicaciones distribuidas es
similar al de aplicaciones convencionales
Delega en los niveles inferiores la complejidad y ofrece servicios
fiables:
Transparencia
Transparencia
Transparencia
Transparencia
Transparencia

de localizacin
de concurrencia
de replicacin
ante fallos
...

Diego Sevilla Ruiz (DITEC Facultad de Informtica)

Sistemas Distribuidos

Murcia, septiembre 2010

13 / 47

Arquitecturas Sistemas Centralizados

No escalables
Cmo aadir ms recursos?

Diego Sevilla Ruiz (DITEC Facultad de Informtica)

Sistemas Distribuidos

Murcia, septiembre 2010

14 / 47

Arquitecturas Primeros sistemas distribuidos

Primeros programas distribuidos


Conexiones explcitas, protocolos explcitos, herramientas bsicas
P. ej. Demonios remotos UNIX

Diego Sevilla Ruiz (DITEC Facultad de Informtica)

Sistemas Distribuidos

Murcia, septiembre 2010

15 / 47

Arquitecturas Primeros sistemas distribuidos (ii)

Servicios bsicos por parte del Sistema Operativo


Direccionamiento
Sockets
Normalmente slo implicaban a dos programas (Cliente/Servidor)

Diego Sevilla Ruiz (DITEC Facultad de Informtica)

Sistemas Distribuidos

Murcia, septiembre 2010

16 / 47

Arquitecturas Internet/World Wide Web/CGI

Servidor
HTTP

Browser

HTTP

Internet
TCP/IP

HTTP

Nivel 1

Diego Sevilla Ruiz (DITEC Facultad de Informtica)

Sistemas Distribuidos

P
aginas
HTML

SGBD

Prog.
CGI

Servidor
SMTP

Nivel 2

Nivel 3

Murcia, septiembre 2010

17 / 47

Arquitecturas Internet/World Wide Web/CGI (ii)

Sockets
API de bajo nivel
Gestin de errores?
No hay tipos de datos... comprobacin?

Protocolo CGI ad-hoc


Stateless (salvo con otros hacks como los cookies)
El servidor no da soporte para persistencia (bases de datos),
transacciones, seguridad, gestin de usuarios, etc.
Las aplicaciones tienen que implementar TODO, o usar frameworks

etc.

Diego Sevilla Ruiz (DITEC Facultad de Informtica)

Sistemas Distribuidos

Murcia, septiembre 2010

18 / 47

Arquitecturas 2 y 3 niveles

Cliente
Presentaci
on
Logica del negocio
Acceso a datos

Servidor
Servidores BD
Sistemas Legacy
etc.

Nivel 1

Nivel 2

Cliente
Presentaci
on

Logica del negocio


Acceso a datos

Servidor
Servidores BD
Sistemas Legacy
etc.

Nivel 1

Nivel 2

Nivel 3, ...

Diego Sevilla Ruiz (DITEC Facultad de Informtica)

Sistemas Distribuidos

Murcia, septiembre 2010

19 / 47

TPMs, Clusters, etc.

En la prctica, se utilizan sistemas de n capas


La distribucin: mltiples clientes por Web (thin clients) y un
sistema de BBDD que est basado en clster
Clsters de bases de datos/procedimientos proporcionados por
paquetes comerciales (Oracle, DB/2, etc.)
Gestin de MUCHOS clientes: Transaction-Processing Monitors
Diego Sevilla Ruiz (DITEC Facultad de Informtica)

Sistemas Distribuidos

Murcia, septiembre 2010

20 / 47

Sistemas de ms alto nivel: RPC

Primer sistema en diferenciar interfaz/implementacin


Ms alto nivel (comprobacin de tipos)
Interfaz (lista de operaciones) Stubs/Skeletons
El interfaz se describe en C
El compilador de RPC genera los stubs y los skeletons
El programador realiza llamadas locales
Los stubs y skeletons realizan el trabajo remoto
TRANSPARENCIA LOCAL/REMOTA

Ejemplo: SUN RPC


Software intermedio: MIDDLEWARE

Diego Sevilla Ruiz (DITEC Facultad de Informtica)

Sistemas Distribuidos

Murcia, septiembre 2010

21 / 47

Diego Sevilla Ruiz (DITEC Facultad de Informtica)

Sistemas Distribuidos

Murcia, septiembre 2010

22 / 47

Objetos Distribuidos: CORBA/RMI


Muy parecido a RPC, pero basado en objetos
El middleware ahora toma ms importancia

Diego Sevilla Ruiz (DITEC Facultad de Informtica)

Sistemas Distribuidos

Murcia, septiembre 2010

23 / 47

Message-Oriented Middleware

Sncrono/asncrono
Normalmente Suscripcin/Respuesta
Documentos XML Mensajes
Loose Coupling
JMS, AMQP, ActiveMQ, MQ, MSMQ, D-Bus, etc.
ESBs: Mensajera + Servicios de dominio
Diego Sevilla Ruiz (DITEC Facultad de Informtica)

Sistemas Distribuidos

Murcia, septiembre 2010

24 / 47

D-Bus

Diego Sevilla Ruiz (DITEC Facultad de Informtica)

Sistemas Distribuidos

Murcia, septiembre 2010

25 / 47

D-Bus (ii)

Message message = new Message ( " / remote / object / path " ,


" MethodName " , arg1 , arg2
);
Connection connection = getBusConnection () ;
connection . send ( message ) ;
Message reply = connection . waitForReply ( message ) ;
if ( reply . isError () ) {
// ...
} else {
Object returnValue = reply . getReturnValue () ;
}

Diego Sevilla Ruiz (DITEC Facultad de Informtica)

Sistemas Distribuidos

Murcia, septiembre 2010

26 / 47

D-Bus (iii)

$ dbus - monitor
method call sender =:1.751 -> dest = org . gnome . GConf
serial =2 path =/ org / gnome / GConf ; interface = org .
gnome . GConf ; member = GetIOR
method return sender =:1.4 -> dest =:1.751 reply_serial
=2
string " IOR :01..."
signal sender = org . freedesktop . DBus -> dest =( null
destination ) serial =1218 path =/ org / freedesktop /
DBus ; interface = org . freedesktop . DBus ; member =
NameOwnerChanged
string ":1.751"
string ":1.751"

Diego Sevilla Ruiz (DITEC Facultad de Informtica)

Sistemas Distribuidos

Murcia, septiembre 2010

27 / 47

Peer to Peer

Modelo ms descentralizado: todos aportan por igual o en la medida


de sus posibilidades
El MOM tambin soporta esta arquitectura
Ejemplos: JXTA
Diego Sevilla Ruiz (DITEC Facultad de Informtica)

Sistemas Distribuidos

Murcia, septiembre 2010

28 / 47

Web Services/SOA

Todo se hace accesible a travs de servicios (web)


Protocolos estndar: HTTP, XML, SOAP, WSDL
Qu pasa con los callbacks?
Manejo del estado?
No hay soporte del servidor
Diego Sevilla Ruiz (DITEC Facultad de Informtica)

Sistemas Distribuidos

Murcia, septiembre 2010

29 / 47

REST REpresentational State Transfer

Diego Sevilla Ruiz (DITEC Facultad de Informtica)

V. van Gogh. Noon: Rest From Work. 1889-90.


Sistemas Distribuidos

Murcia, septiembre 2010

30 / 47

REST (ii)
Patrn arquitectural de desarrollo de aplicaciones sobre el Web
Desarrollado por Roy T. Fielding en su tesis doctoral
Aprovecha el web tal y como est
El web ha sido escalable hasta ahora por tener una serie de
requisitos: se aplicarn a REST

Identificacin de recursos
Todos los elementos accedidos remotamente tienen una identificacin
(URI). Se elige una representacin para cada recurso (XML, YAML)

Manipulacin de recursos
Hay operaciones para crear, modificar y borrar (CRUD) recursos

Mensajes auto-descriptivos
Los recursos incluyen metadatos (cache, validez, MIME). Incluidos en
los headers de HTTP
Los metadatos permiten tratar el mensaje

Tejido hypermedia como representacin del estado de la


aplicacin (HATEOAS)
Los datos retornados pueden incluir enlaces a otros recursos
Diego Sevilla Ruiz (DITEC Facultad de Informtica)

Sistemas Distribuidos

Murcia, septiembre 2010

31 / 47

Componentes: CCM/EJB

Componentes: Entidades redistribuibles binarias ejecutadas en un


entorno de ejecucin (run-time)
Modelo contenedor
Unidades independientes de construccin de programas
Unidades binarias de desarrollo, prueba y ensamblado
Soporte run-time que permite instalar componentes
El entorno de ejecucin (run-time) ofrece todos los servicios a los
componentes instalados
Seguridad, transacciones, persistencia, etc.
Ofrecidos como aspectos (Aspect-Oriented Programming (AOP))

Diego Sevilla Ruiz (DITEC Facultad de Informtica)

Sistemas Distribuidos

Murcia, septiembre 2010

32 / 47

Componentes: CCM/EJB (ii)

Diego Sevilla Ruiz (DITEC Facultad de Informtica)

Sistemas Distribuidos

Murcia, septiembre 2010

33 / 47

Modelos de Componentes Distribuidos

Los componentes se encuentran distribuidos


Diferentes organizaciones ofrecen componentes
Bien para descargar
Bien para utilizarlos remotamente bajo pago

Necesidad de un entorno seguro, autenticado... p. ej. Grid


Transparencia local/remota
Paletas de componentes similares a Delphi o VB, pero distribuidas

Diego Sevilla Ruiz (DITEC Facultad de Informtica)

Sistemas Distribuidos

Murcia, septiembre 2010

34 / 47

Cloud Computing

Diego Sevilla Ruiz (DITEC Facultad de Informtica)

Sistemas Distribuidos

Murcia, septiembre 2010

35 / 47

Cloud Computing (ii)

Diego Sevilla Ruiz (DITEC Facultad de Informtica)

Sistemas Distribuidos

Murcia, septiembre 2010

36 / 47

Cloud Computing (iii)

Diego Sevilla Ruiz (DITEC Facultad de Informtica)

Sistemas Distribuidos

Murcia, septiembre 2010

37 / 47

Sistemas Operativos Distribuidos

Sistemas Distribuidos versus Sistemas Operativos Distribuidos?


Polmica hace unos aos
Principales diferencias:
Heterogeneidad (hw, so., etc.)
Sistema dbilmente acoplado vs. Sistema fuertemente acoplado

Inmaduros en su comienzo
Ahora sera el momento de avanzar en la direccin
GNU/Hurd
CODA
Amoeba, MOSIX

Diego Sevilla Ruiz (DITEC Facultad de Informtica)

Sistemas Distribuidos

Murcia, septiembre 2010

38 / 47

Introduccin a los Patrones y Herramientas

Patrones
Solucin dada reiteradamente a un problema comn
Best practices
Suben el nivel de abstraccin, tratan problemas en abstracto
En programacin distribuida poca experiencia
Los utilizaremos para aprender sobre cmo construir mejores
aplicaciones distribuidas
Elementos:
Nombre, Contexto, Problema, Cuestiones relevantes, Solucin

Lenguaje de Patrones: Conjunto de patrones relacionados que sirven


para un fin comn (POSA2)

Diego Sevilla Ruiz (DITEC Facultad de Informtica)

Sistemas Distribuidos

Murcia, septiembre 2010

39 / 47

Introduccin a los Patrones y Herramientas (ii)

Idioms
Patrones, pero de ms bajo nivel
Asociados a un lenguaje, normalmente C++
No por ello menos importantes
Importantsimos por ejemplo en el mapping de C++ a CORBA
Ejemplo: Scoped Locking
C++ Idioms: James O. Coplien
http://www1.belllabs.com/user/cope/Patterns/C %2b %2bIdioms/EuroPLoP98.html

Diego Sevilla Ruiz (DITEC Facultad de Informtica)

Sistemas Distribuidos

Murcia, septiembre 2010

40 / 47

Introduccin a los Patrones y Herramientas (iii)


Scoped Locking (POSA2, p. 325)

(Resource Acquisition is Initialization)

pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;


int funcin(...)
{
pthread_mutex_lock(&mutex);
if (condicin)
{
// lo que sea
pthread_mutex_unlock(&mutex);
return 1;
}
pthread_mutex_unlock(&mutex);
return 0;
}
Diego Sevilla Ruiz (DITEC Facultad de Informtica)

Sistemas Distribuidos

Murcia, septiembre 2010

41 / 47

Introduccin a los Patrones y Herramientas (iv)


Scoped Locking (cont.)

Diego Sevilla Ruiz (DITEC Facultad de Informtica)

Sistemas Distribuidos

Murcia, septiembre 2010

42 / 47

Introduccin a los Patrones y Herramientas (v)

Scoped Locking (cont.)


class SyncLock
{
public:
SyncLock(pthread_mutex_t* m)
{
mutex_ = m;
pthread_mutex_lock( mutex_ );
}
~SyncLock()
{
pthread_mutex_unlock( mutex_ );
}
private:
pthread_mutex_t* mutex_;
}

Diego Sevilla Ruiz (DITEC Facultad de Informtica)

Sistemas Distribuidos

Murcia, septiembre 2010

43 / 47

Introduccin a los Patrones y Herramientas (vi)


Scoped Locking (cont.) RAII http://www.hackcraft.net/raii/
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
int funcin(...)
{
SyncLock sl(&mutex);
if (condicin)
{
// lo que sea
return 1;
}
return 0;
}

Diego Sevilla Ruiz (DITEC Facultad de Informtica)

Sistemas Distribuidos

Murcia, septiembre 2010

44 / 47

Metamodelado Eclipse

Diego Sevilla Ruiz (DITEC Facultad de Informtica)

Sistemas Distribuidos

Murcia, septiembre 2010

45 / 47

Modelos

SyncLock

Diego Sevilla Ruiz (DITEC Facultad de Informtica)

Sistemas Distribuidos

Murcia, septiembre 2010

46 / 47

Modelos (ii)
SyncLock

Diego Sevilla Ruiz (DITEC Facultad de Informtica)

Sistemas Distribuidos

Murcia, septiembre 2010

47 / 47

También podría gustarte