170 likes | 281 Views
DERMI Middleware para aplicaciones de trabajo en grupo descentralizadas. Carles Pairot, Pedro García, Robert Rallo, Rubén Mondéjar Antonio F. Gómez Skarmeta {cpairot, pgarcia, rrallo}@etse.urv.es skarmeta@dif.um.es Universitat Rovira i Virgili – Universidad de Murcia. Noviembre 2003.
E N D
DERMIMiddleware para aplicaciones de trabajo en grupo descentralizadas Carles Pairot, Pedro García, Robert Rallo, Rubén Mondéjar Antonio F. Gómez Skarmeta {cpairot, pgarcia, rrallo}@etse.urv.es skarmeta@dif.um.es Universitat Rovira i Virgili – Universidad de Murcia Noviembre 2003
Motivación Aprendizaje Colaborativo (CSCL) Trabajo en grupo (CSCW) Sistemas distribuidos
Motivación • El crecimiento de la red Internet. • Aparición de multitud de aplicaciones para entornos de área extensa (WANs) • E-mail, news, mensajeria instantánea, … • No existen sistemas de middleware para desarrollar aplicaciones a escala WAN. • Transición de modelos cliente/servidor a modelos descentralizados. • Aprovechamiento de los recursos. • Reducción de los cuellos de botella o hot spots.
El paradigma P2P • Numerosas killer applications • Napster, KaZaA, eMule, Gnutella, … • Reciente revolución en P2P • Aparición de las Tablas de Hash Distribuidas (DHTs). • Definición de topologías organizadas (en forma de anillo). • Localización de recursos en O(log n)saltos.
DERMI • Middleware de objetos distribuidos P2P. • Utiliza DHTs (Pastry) como mecanismo de localización de recursos. • Multicast a nivel de aplicación: Scribe • Propagación de eventos.
DERMI (2) • Utiliza el sistema de publicación / suscripción (Scribe) para • Modelar las llamadas a métodos como eventos y suscripciones. • Ofrece los servicios tradicionales • Invocaciones síncronas / asíncronas. • Servicio de nombres.
Servicios de DERMI • Servicios nuevos: • Movilidad de objetos. • Replicación y caches de objetos. • Intercepción distribuida. • Localización descentralizada. • Abstracciones de invocación: • Anycall. • Manycall.
Localización descentralizada • Nos permite encontrar las referencias de los objetos. • Podemos ejecutar llamadas sobre ellos. El nodo n0 inserta su handle en n1, haciendo un hash de su nombre (/simple). El nodo n2 desea obtener el handle del objeto, hace un hash de su nombre (/simple) y le pide a n1 que le devuelva el handle del objeto. n2 2 3 n1 1 Ahora n2 ya puede llamar los métodos del objeto. n0
Intercepción Distribuida • Reconexión y localización de interceptores de tipos compatibles en tiempo de ejecución. • Siguiendo el modelo Java RMI • Creamos stubs y skeletons propios para las clases remotas. • Pueden interceptar llamadas a un determinado objeto remoto en ejecución. • Hemos extendido el servidor de eventos Scribe • Así soportamos la intercepción distribuida nativamente.
Intercepción Distribuida (2) 6 evt’’ evt’’ 5 n1 n2 El objeto en el nodo n0 envía un evento al grupo cuya raíz es R. I2 R 4 R evt’’ R El evento se envía a la cola de interceptores secuencialmente I1, I2, transformándolo (evt → evt’ → evt’’). evt' 3 evt 2 evt Finalmente, el evento se envía de vuelta a la raíz, entregándolo al resto de suscriptores del grupo (n1, n2). 1 n0 I1
Intercepción Distribuida (3) • Los datos de la cola de interceptores se guardan en el rendez-vous point o raíz del grupo multicast • ¿Qué pasa si el nodo raíz es inaccesible? • La cola de interceptores se mantiene replicada en los k nodos más cercanos a la raíz usando el sistema de replicación PAST.
Anycall y Manycall • Se trata de dos nuevas abstracciones RPC. • Construidas utilizando la primitiva anycast de Scribe. • Anycast permite enviar un mensaje al miembro del grupo más cercano al nodo que realiza la llamada. • Si el mensaje llega a la raíz del grupo, ningún miembro podrá satisfacer la condición • Excepción notificada al cliente.
Anycall • Ejemplo: obtención de datos para una simulación El nodo C envía un anycall al grupo para encontrar una DATA_UNIT para analizar. n0 Anycall DATA_UNIT n2 no tiene ninguna DATA_UNIT para proporcionarle y envía la petición a n4 C n2 n1 n4 tampoco dispone de DATA_UNITs por lo que el mensaje es enrutado a n3 n3 n4 n3 dispone de DATA_UNITs y finalmente proporciona una a C Nueva DATA_UNIT
Manycall • Variación de anycall considerando n miembros. • Una petición manycall debe de poder ser satisfecha por varios miembros del grupo. • Obviamente, si llega a la raíz y no satisfecho • Excepción notificando al cliente • Ejemplo: Votación
Prueba de concepto: CoopWork • CoopWork: Herramienta de desarrollo de software en grupo descentralizada • Integra diferentes herramientas: • Servicios de presencia • Sistema de chat • Lista de recursos modificados • Historial de versiones publicadas • Sistema de avisos • Mecanismos para compartir el código
Conclusiones y Vías Futuras • Plataforma de colaboración aumentada para el acceso y distribución de contenidos educativos
¡Gracias por su atención! ¿Preguntas?