Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Sistemas Distribuidos
1 / 47
ndice
Sistemas Distribuidos: Introduccin y Conceptos Sistemas Distribuidos: Arquitecturas Sistemas Cloud Sistemas Operativos Distribuidos Introduccin a los Patrones y las Herramientas
Sistemas Distribuidos
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
Sistemas Distribuidos
3 / 47
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
Sistemas Distribuidos Murcia, septiembre 2010 4 / 47
Heterogeneidad
Redes Hardware Sistemas Operativos Middleware
Sistemas Distribuidos
5 / 47
Sistemas Distribuidos
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
Sistemas Distribuidos
7 / 47
Caracterstica de un sistema que permite aadirle nuevas caractersticas y servicios de forma dinmica Herramientas:
Sistemas Abiertos Loose Coupling
Sistemas Distribuidos
8 / 47
Herramientas:
PKIs, SSL, Servicios de Directorio, Proxys anonimizadores, funciones de hash, etc.
Sistemas Distribuidos
9 / 47
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. Uso de algoritmos altamente paralelizables (programacin funcional, lgica, algoritmos Map/Reduce), etc.
Sistemas Distribuidos
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 Idempotentibilidad
Sistemas Distribuidos
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
Sistemas Distribuidos
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 ...
Sistemas Distribuidos
13 / 47
Sistemas Distribuidos
14 / 47
Primeros programas distribuidos Conexiones explcitas, protocolos explcitos, herramientas bsicas P. ej. Demonios remotos UNIX
Sistemas Distribuidos
15 / 47
Servicios bsicos por parte del Sistema Operativo Direccionamiento Sockets Normalmente slo implicaban a dos programas (Cliente/Servidor)
Sistemas Distribuidos
16 / 47
Browser
HTTP
Internet TCP/IP
HTTP
Nivel 1
Nivel 2
Nivel 3
Sistemas Distribuidos
17 / 47
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.
Sistemas Distribuidos
18 / 47
Arquitecturas 2 y 3 niveles
Nivel 1
Nivel 2
Cliente Presentaci on
Nivel 1
Nivel 2
Nivel 3, ...
Sistemas Distribuidos
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 (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
Sistemas Distribuidos
21 / 47
Sistemas Distribuidos
22 / 47
Sistemas Distribuidos
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
Sistemas Distribuidos
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 () ; }
Sistemas Distribuidos
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"
Sistemas Distribuidos
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
Hay operaciones para crear, modicar 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
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))
Sistemas Distribuidos
32 / 47
Sistemas Distribuidos
33 / 47
Necesidad de un entorno seguro, autenticado... p. ej. Grid Transparencia local/remota Paletas de componentes similares a Delphi o VB, pero distribuidas
Sistemas Distribuidos
34 / 47
Cloud Computing
Sistemas Distribuidos
35 / 47
Sistemas Distribuidos
36 / 47
Sistemas Distribuidos
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
Sistemas Distribuidos
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)
Sistemas Distribuidos
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
Sistemas Distribuidos
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
Sistemas Distribuidos
42 / 47
Sistemas Distribuidos
43 / 47
Sistemas Distribuidos
44 / 47
Metamodelado Eclipse
Sistemas Distribuidos
45 / 47
Modelos
SyncLock
Sistemas Distribuidos
46 / 47
Modelos (ii)
SyncLock
Sistemas Distribuidos
47 / 47