Professional Documents
Culture Documents
Murcia, 2012
Sistemas Distribuidos
Murcia, 2012
1 / 33
ndice
INTRODUCCIN
Aspectos especcos de diseo para aplicaciones distribuidas Eciencia y escalabilidad en sistemas distribuidos
Sistemas Distribuidos
Murcia, 2012
2 / 33
El diseo de aplicaciones distribuidas est guiado por los requisitos de los sistemas de computacin:
Eciencia Mantenimiento Escalabilidad
Sistemas Distribuidos
Murcia, 2012
3 / 33
Sistemas Distribuidos
Murcia, 2012
4 / 33
Evitar el espacio de nombres global Un mdulo por chero IDL Nada fuera de un mdulo Mdulos anidados si es necesario/til uso de #ifdef:
// Fichero Control.idl #include <YYY.idl> #ifndef _CONTROL_IDL_ #define _CONTROL_IDL_ module Control { ... }; #endif
Sistemas Distribuidos
Murcia, 2012
5 / 33
Granularidad
Algunos ORBs optimizan las llamadas locales Los objetos de granularidad baja pueden ser tiles
Sistemas Distribuidos
Murcia, 2012
6 / 33
Un diseo tan sencillo como: interface SensorAire readonly attribute readonly attribute readonly attribute readonly attribute }; { float float float float temperatura; presin; humedad; velocidad_viento; 0.01 s 24 s (mem. compartida) 60 s (TCP) 220 s (TCP+Ethernet) 220.000 s 460 s (x478!!)
Mismo proceso: Distintos procesos, mismo sistema: Distintos procesos, mismo sistema: Distintos procesos, diferente sistema: 1000 invocaciones: 250 llamadas con todos los parmetros:
Sistemas Distribuidos
Murcia, 2012
7 / 33
Se puede convertir: interface SensorAire { struct DatosSensor { float temperatura; float presin; float humedad; float velocidad_viento; }; DatosSensor getDatos(); };
Sistemas Distribuidos
Murcia, 2012
8 / 33
Sistemas Distribuidos
Murcia, 2012
10 / 33
Hay que evitar esto en IDL: interface MessagePort { void send(in any message); void recv(in any message); } Falta de tipado estricto Eciencia: conversin del tipo any
Sistemas Distribuidos
Murcia, 2012
11 / 33
Sistemas Distribuidos
Murcia, 2012
13 / 33
Se deben usar slo en circunstancias excepcionales Utilizacin de la capacidad de incluir datos para establecer el contexto de la excepcin Sin embargo, no es bueno tener un nico tipo de excepcin y diferenciar por los datos miembro
Se evita lgica innecesaria para evitar las excepciones no deseadas
Sistemas Distribuidos
Murcia, 2012
14 / 33
exception RuntimeError { string whatHappened; }; vs. exception RuntimeError {}; exception CalcError : RuntimeError {}; exception NoMoreMemory : RuntimeError {}; ...
Sistemas Distribuidos
Murcia, 2012
15 / 33
Se deben usar para ensamblar el sistema (dnde y cmo crear los objetos)
Sistemas Distribuidos
Murcia, 2012
16 / 33
Una factora de factoras tambin es interesante para encapsular la construccin del sistema: interface WeatherStation { AirSensorFactory air_sensors(); WaterSensorFactory water_sensors(); };
Sistemas Distribuidos
Murcia, 2012
17 / 33
Sistemas Distribuidos
Murcia, 2012
18 / 33
Layers
Cliente
Capa de traduccin y delegacin
Servidor
Muy pequea con respecto al resto de la aplicacin Patrn Adapter (Wrapper Facade, POSA2, p. 47)
Sistemas Distribuidos
Murcia, 2012
19 / 33
Layers ventajas
Slo un grupo de programadores tiene que conocer CORBA La aplicacin se puede probar de forma independiente Aisla al programa de la tecnologa utilizada
Sistemas Distribuidos
Murcia, 2012
20 / 33
Layers inconvenientes
Requiere ms cdigo
Necesidad de generar nuevos tipos y APIs equivalentes a los que aparecen en IDL
Sistemas Distribuidos
Murcia, 2012
21 / 33
Modelos de threads:
Thread per request Thread per client (per connection) Thread pool
Sistemas Distribuidos
Murcia, 2012
22 / 33
Sistemas Distribuidos
Murcia, 2012
23 / 33
Cliente 3
Servidor
Sistemas Distribuidos
Murcia, 2012
24 / 33
Sistemas Distribuidos
Murcia, 2012
25 / 33
Los ORBs de un nico thread utilizan este patrn para sus conexiones Ver tambin: Patrn Proactor, Acceptor/Connector, Asynchronous Completion Token, etc. (POSA1/2)
Diego Sevilla Ruiz (DITEC Facultad de Informtica) Sistemas Distribuidos Murcia, 2012 26 / 33
Thread pet. 2
1
Cliente 2
peticin 2
petici n3
Thread pet. 3
Cliente 3
Servidor
Sistemas Distribuidos
Murcia, 2012
27 / 33
El cdigo de cada thread debe ser thread-safe Se crea un thread para cada peticin No es muy escalable, y
Funciona bien con pocas peticiones que se pueden ejecutar en paralelo El tiempo de respuesta es largo Puede dejar exhaustos los recursos del servidor (no de threads, por ejemplo) Memoria, manejo de threads, cambios de contexto, creacin y destruccin de threads, etc.
Sistemas Distribuidos
Murcia, 2012
28 / 33
Cliente 2
peticin 2
n3 petici
Cliente 3
Servidor
Bueno para muchas peticiones y pocos clientes (orientado a sesin) Reusa conexiones entre ordenadores
Sistemas Distribuidos
Murcia, 2012
29 / 33
Cola de peticiones
Cliente 2
peticin 2
n3 petici
Cliente 3
Servidor
Sistemas Distribuidos
Murcia, 2012
30 / 33
Sistemas Distribuidos
Murcia, 2012
31 / 33
Al principio se crean un conjunto de threads Se elige un thread de los del pool (o cada thread coge una peticin cuando no tiene nada que hacer) Permite tener acotados los recursos
Nmero de threads jo o acotado No incurre en creacin de nuevos threads
Sistemas Distribuidos
Murcia, 2012
32 / 33
Thread-Specic Storage
Sistemas Distribuidos
Murcia, 2012
33 / 33