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
Motivación Aprendizaje Colaborativo (CSCL) Trabajo en grupo (CSCW) Sistemas distribuidos Noviembre 2003
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. Noviembre 2003
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. Noviembre 2003
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. Noviembre 2003
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. Noviembre 2003
Servicios de DERMI Servicios nuevos: Abstracciones de invocación: Movilidad de objetos. Replicación y caches de objetos. Intercepción distribuida. Localización descentralizada. Abstracciones de invocación: Anycall. Manycall. Noviembre 2003
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 1 n1 Ahora n2 ya puede llamar los métodos del objeto. n0 Noviembre 2003
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. Noviembre 2003
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 4 R evt’’ R 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). n0 1 I1 Noviembre 2003
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. Noviembre 2003
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. Noviembre 2003
n3 dispone de DATA_UNITs y finalmente proporciona una a C 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 n1 n2 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 Noviembre 2003
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 Noviembre 2003
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 Noviembre 2003
Conclusiones y Vías Futuras Plataforma de colaboración aumentada para el acceso y distribución de contenidos educativos Noviembre 2003
¡Gracias por su atención! ¿Preguntas? Noviembre 2003