Escolar Documentos
Profissional Documentos
Cultura Documentos
1 / 47
ndice
Sistemas Distribuidos: Introduccin y Conceptos Sistemas Distribuidos: Arquitecturas Sistemas Cloud Sistemas Operativos Distribuidos Introduccin a los Patrones y las Herramientas
2 / 47
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
3 / 47
Uso ubcuo de cachs, homogeneizacin de datos y procesamiento, Map/Reduce, paralelismo funcional, automtico, REST, etc.
Aqu nos centraremos
http://queue.acm.org/detail.cfm?id=1466448
Murcia, septiembre 2010 4 / 47
Heterogeneidad
Redes Hardware Sistemas Operativos Middleware
5 / 47
6 / 47
Herramientas:
Protocolos de comunicacin APIs estndar (Middleware) Sistemas Abiertos (i.e. CORBA, Internet, etc.)
Especicaciones pblicas Mecanismos de comunicacin estandarizados Utilizando hardware y software COTS
7 / 47
Caracterstica de un sistema que permite aadirle nuevas caractersticas y servicios de forma dinmica Herramientas:
Sistemas Abiertos
8 / 47
Herramientas:
PKIs, SSL, Servicios de Directorio, etc.
9 / 47
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 eciente en tiempo y espacio Patrones de diseo y de cdigo (idiomas) para manejar ecientemente conexiones, threads, etc. Uso de cachs, consistencia eventual, etc.
10 / 47
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
11 / 47
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 ineciente No tratadas en profundidad en esta asignatura
12 / 47
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 ables:
Transparencia Transparencia Transparencia Transparencia Transparencia de localizacin de concurrencia de replicacin ante fallos ...
13 / 47
14 / 47
Primeros programas distribuidos Conexiones explcitas, protocolos explcitos, herramientas bsicas P. ej. Demonios remotos UNIX
15 / 47
Servicios bsicos por parte del Sistema Operativo Direccionamiento Sockets Normalmente slo implicaban a dos programas (Cliente/Servidor)
16 / 47
Browser
HTTP
Internet TCP/IP
HTTP
Nivel 1
Nivel 2
Nivel 3
17 / 47
Sockets
API de bajo nivel Gestin de errores? No hay tipos... comprobacin?
Protocolo CGI ad-hoc Stateless (salvo con otros hacks como los cookies) No soporte del servidor etc.
18 / 47
Arquitecturas 2 y 3 niveles
Nivel 1
Nivel 2
Cliente Presentaci on
Nivel 1
Nivel 2
Nivel 3, ...
19 / 47
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
Primer sistema en diferenciar interfaz/implementacin Ms alto nivel (comprobacin de tipos) Interfaz 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
21 / 47
22 / 47
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
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 () ; }
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"
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
V. van Gogh. Noon: Rest From Work. 1889-90. Diego Sevilla Ruiz (DITEC Facultad de Informtica) 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
Identicacin de recursos
Todos los elementos accedidos remotamente tienen una identicacin (URI). Se elige una representacin para cada recurso (XML, YAML)
Manipulacin de recursos
Los recursos incluyen metadatos (cache, validez, MIME). Incluidos en los headers de HTTP
Mensajes auto-descriptivos
Los metadatos permiten tratar el mensaje
Componentes: CCM/EJB
Modelo contenedor Entidades redistribuibles binarias Unidades independientes de construccin de programas Unidades binarias de desarrollo, prueba y ensamblado Soporte run-time que permite instalar componentes Ofrece todos los servicios a los componentes instalados
Aspect-Oriented Programming (AOP) Generacin automtica de cdigo para cada aspecto
32 / 47
33 / 47
Necesidad de un entorno seguro, autenticado... p. ej. Grid Transparencia local/remota Paletas de componentes similares a Delphi o VB, pero distribuidas
34 / 47
Cloud Computing
35 / 47
36 / 47
37 / 47
Sistemas Distribuidos versus Sistemas Operativos Distribuidos? Polmica hace unos aos Principales diferencias:
Heterogeneidad (hw, so., etc.) Sistema dbilmente acoplado vs. Sistema fuertemente acoplado
38 / 47
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 n comn (POSA2)
39 / 47
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
40 / 47
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
42 / 47
43 / 47
44 / 47
Metamodelado Eclipse
45 / 47
Modelos
SyncLock
46 / 47
Modelos (ii)
SyncLock
47 / 47