Upload
leopold-lacombe
View
110
Download
1
Tags:
Embed Size (px)
Citation preview
Jini et Applications Réparties: Jini et Applications Réparties: Le Projet Nœud de Calcul Le Projet Nœud de Calcul
(PNC)(PNC)
Plan
Présentation et organisation du projet
Concepts généraux de JINI
Architecture du projet
Démonstration
L’exemple 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 l’initiative 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 n’est 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 s’impliquer 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 JINIApplications 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 JINIConcepts clés
Fédération : ensemble d’acteurs 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 InvocationComment ça marche ?
JVM B JVM AObjet ClientObjet Serveur
RMI registry2 - 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 InvocationRôle des Stubs
StubJVM AObjet Serveur
RMI registry
Bind
codebase
StubStub
Stub
StubStub
StubStub
StubStub
StubStub
StubStub
Stub
Côté serveur
Lookup
JVM BObjet Client
RMI registryStub
Côté client
Concepts généraux de JINILe service de recherche (REGGIE) Acteur central de toute fédération JINI Chargé de recenser l’ensemble des acteurs
d’une fédération Fournit l’accè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 JINIComment ça marche : DISCOVERY
Concepts généraux de JINIComment ça marche : JOIN
Concepts généraux de JINIComment ça marche : Envoi du proxy
Concepts généraux de JINIComment ça marche : Communication
Concepts généraux de JINILes services de base
REGGIE
JavaSpace : Permet de faire transiter des objets entre les acteurs d’une fédération sous forme d’Entry 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 JINILes 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 projetLes différents composants
Les services JINI répartis sur deux machines
Un site Web : mise à disposition des proxys
Architecture du projetLes différents composants
Une communauté de workers : exécution des tâches et retour des résultats
Architecture du projetLes différents composants
Un master : dépôt des tâches, collecte des résultats partiels et construction du résultat final
Architecture du projetLes différents composants
Un controler : surveillance et administration distante
Architecture du projet Les différents composants
Architecture du projetRé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 projetLa surveillance de l’activité
Les workers s’enregistrent en tant que services auprès de la REGGIE
Le Controler interroge la REGGIE pour connaître les workers et le JavaSpace présents
L’interface graphique du Controler permet de suivre l’activité des workers et de les administrer ainsi que de connaître le contenu du JavaSpace
Architecture du projet La surveillance de l’activité
Démonstration du projet
Création du répertoire
mkdir atelier
cd atelier
Récupération d’une copie du projet sur le CVS
cvs –d:pserver:[email protected]:/usr/local/cvs login
cvs –d:pserver:[email protected]:/usr/local/cvs co pnc
Démonstration du projet
Compilation du projet
cd pnc
ant deploy
Démarrage du Mastercd deploy
./startFractalMaster
Démarrage du Controler
./startControler
L’exemple HelloWorld: Récupérer les sources
http://bitos33.free.fr/atelier tar xvfz atelier19-04.tgz cd jini sh compile.sh sh service.sh Dans un autre console : sh client.sh
L’exemple HelloWorld: L’interface du Serveur
Le Service ne propose qu’une seule fonctionnalité : afficher un message
L’exemple HelloWorld: Le Proxy du Serveur
Serializable : transféré par le réseau
Constructeur vide Propre à la sérialisation
Implémente l’interface précédente
L’exemple HelloWorld: Serveur: Les attributs nécessaires
L’exemple 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 s’y enregistre
L’exemple HelloWorld: Serveur: L’enregistrement du Service
On enregistre notre service auprès de la REGGIE pour un certain temps (LEASE_TIME)
On récupère l’identifiant de notre service une fois enregistré (attribué par la REGGIE)
L’exemple HelloWorld: Client: Les attributs nécessaires
L’exemple 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 d’elle, on y recherche notre service
L’exemple HelloWorld: Client: Recherche d’un service
On définit le type de service à rechercher
On cherche le service dans la REGGIE
L’exemple HelloWorld: Client: Utilisation du service
On caste l’objet trouvé dans la REGGIE avec l’interface 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 : http://s-java.ift.ulaval.ca/~pnc
Inscription à la Mailing List du projet :
http://s-java.ift.ulaval.ca/mailman/listinfo/gnu
Le site de GNU : http://www.gnu.org
Le site de JAVA : http://java.sun.com
Le site de JINI : http://wwws.sun.com/software/jini/
Livre de référence : Core JINI de W.Keith Edwards