Jini et Applications Réparties: Le Projet Nœud de Calcul (PNC)
Plan Présentation et organisation du projet Concepts généraux de JINI Architecture du projet Démonstration Lexemple Hello World
Présentation de léquipe Julie Cardon Julien Cuvillier Louis Demers Geoffrey Devred Jean-Sébastien Landry Romain Lecompte Jean-François Montreuil Stéphane Nicolas
Présentation du projet Débuté en Janvier 2002 sur linitiative de Stéphane Nicolas Développé sous Licence GPL Entièrement programmé en Java Utilisation des API Jini et JavaSpace Le but est de concevoir un système distribué, dynamique, généraliste et maintenable pour la répartition de tâches de calcul sur plusieurs ordinateurs
Organisation du travail dans un projet libre CVS Liste de diffusion Documentation Peu de réunions Accessible à tous Pas de réelles contraintes de productivité
Organisation du travail dans un projet libre (suite…) Chacun peut trouver sa place: programmation, documentation, analyse, site WEB … La connaissance des technologies utilisées nest pas un pré requis Pas de réelle planification …... Mais des progrès visibles quotidiennement !
Notre implication dans le projet Rédaction de documents sur les bases des technologies utilisées Analyse et programmation Moyenne de 20/25 heures par semaine
Intérêt de simpliquer dans un tel projet Nouvelles connaissances en informatique CV Travailler dans une équipe motivée Adaptation à un nouveau style de collaboration
Concepts généraux de JINI Applications réparties : les bases Serveurs : acteurs qui fournissent des services Clients : acteurs qui ont besoin de certains services Proxy (ou Stub) : décrit la façon dont le service doit être utilisé par le client
Concepts généraux de JINI Concepts clés Fédération : ensemble dacteurs communiquant par un réseau Les acteurs sont « plug & play » et autonomes La communication entre clients et serveurs repose sur le téléchargement dynamique de proxys (basé sur RMI)
Remote Method Invocation Comment ça marche ? JVM B JVM A Objet Client Objet Serveur RMI registry 2 - Le client demande à la registry un serveur. 1 - Le serveur s'enregistre auprès de la registry. 3 - Le client appelle des méthodes du serveur.
Remote Method Invocation Rôle des Stubs Stub JVM A Objet Serveur RMI registry Bind codebase Stub Côté serveur Lookup JVM B Objet Client RMI registry Stub Côté client
Concepts généraux de JINI Le service de recherche (REGGIE) Acteur central de toute fédération JINI Chargé de recenser lensemble des acteurs dune fédération Fournit laccès à tous les services enregistrés Accessible à toute la fédération par le protocole DISCOVERY Utilise des protocoles de publication de services (JOIN), et de recherche de services (LOOKUP)
Concepts généraux de JINI Comment ça marche : DISCOVERY
Concepts généraux de JINI Comment ça marche : JOIN
Concepts généraux de JINI Comment ça marche : Envoi du proxy
Concepts généraux de JINI Comment ça marche : Communication
Concepts généraux de JINI Les services de base REGGIE JavaSpace : Permet de faire transiter des objets entre les acteurs dune fédération sous forme dEntry tout en gérant leur durée de vie Mahalo (TransactionManager) : Gère les transactions pour les accès au JavaSpace
Concepts généraux de JINI Les service de base : JavaSpace
Pourquoi avoir choisi JINI ? Robuste : Self-Healing Dynamique : Plug & Play Généraliste : Encapsulation des objets Fiable : Échanges sécurisés par JavaSpace et TransactionManager
Architecture du projet Les différents composants Les services JINI répartis sur deux machines Un site Web : mise à disposition des proxys
Architecture du projet Les différents composants Une communauté de workers : exécution des tâches et retour des résultats
Architecture du projet Les différents composants Un master : dépôt des tâches, collecte des résultats partiels et construction du résultat final
Architecture du projet Les différents composants Un controler : surveillance et administration distante
Architecture du projet Les différents composants
Architecture du projet Répartition des calculs Le Master et les workers présents dans la fédération utilise la REGGIE pour trouver les services de JavaSpace et TransactionManager Le Master génère des tâches de calcul et les dépose dans le JavaSpace Les tâches sont récupérées par les workers, exécutées, puis les résultats sont replacés dans le JavaSpace Les résultats sont récupérés par le Master
Architecture du projet Répartition des calculs
Architecture du projet La surveillance de lactivité Les workers senregistrent en tant que services auprès de la REGGIE Le Controler interroge la REGGIE pour connaître les workers et le JavaSpace présents Linterface graphique du Controler permet de suivre lactivité des workers et de les administrer ainsi que de connaître le contenu du JavaSpace
Architecture du projet La surveillance de lactivité
Démonstration du projet Création du répertoire mkdir atelier cd atelier Récupération dune copie du projet sur le CVS cvs login cvs co pnc
Démonstration du projet Compilation du projet cd pnc ant deploy Démarrage du Master cd deploy./startFractalMaster Démarrage du Controler./startControler
Lexemple HelloWorld: Récupérer les sources tar xvfz atelier19-04.tgz cd jini sh compile.sh sh service.sh Dans un autre console : sh client.sh
Lexemple HelloWorld: Linterface du Serveur Le Service ne propose quune seule fonctionnalité : afficher un message
Lexemple HelloWorld: Le Proxy du Serveur Serializable : transféré par le réseau Constructeur vide Propre à la sérialisation Implémente linterface précédente
Lexemple HelloWorld: Serveur: Les attributs nécessaires
Lexemple HelloWorld: Serveur: Découverte des REGGIE On recherche les reggies du groupe « atelier » sur la machine « kaya.ift.ulaval.ca » On ajoute un écouteur de découverte de nouvelle REGGIE: pour chaque REGGIE, on conserve sa trace et on sy enregistre
Lexemple HelloWorld: Serveur: Lenregistrement du Service On enregistre notre service auprès de la REGGIE pour un certain temps (LEASE_TIME) On récupère lidentifiant de notre service une fois enregistré (attribué par la REGGIE)
Lexemple HelloWorld: Client: Les attributs nécessaires
Lexemple HelloWorld: Client: Découverte des REGGIE On recherche les reggies du groupe « atelier » sur la machine « kaya.ift.ulaval.ca » On ajoute un écouteur de découverte REGGIE: pour chacune delle, on y recherche notre service
Lexemple HelloWorld: Client: Recherche dun service On définit le type de service à rechercher On cherche le service dans la REGGIE
Lexemple HelloWorld: Client: Utilisation du service On caste lobjet trouvé dans la REGGIE avec linterface du Serveur et on appelle sa méthode partagée
Conclusion Un projet intéressant tant sur le plan technique que sur le plan organisationnel Le monde du logiciel libre est en pleine expansion et toute contribution est toujours la bienvenue. Contribuez!
MERCI DE VOTRE ATTENTION Le site du projet : Inscription à la Mailing List du projet : Le site de GNU : Le site de JAVA : Le site de JINI : Livre de référence : Core JINI de W.Keith Edwards