Partie 2 - LITIS - Université du Havre
Transcription
Partie 2 - LITIS - Université du Havre
NFP111 — Systèmes et Applications Réparties 1 de 9 Plan Exercices Exercice 0 NFP111 — Systèmes et Applications Réparties Exercice 1 Exercice 2 Cours 6 - Remote Method Invocation (RMI)/Partie 2 Claude Duvallet Université du Havre UFR Sciences et Techniques 25 rue Philippe Lebon - BP 540 76058 LE HAVRE CEDEX Courriel : [email protected] http://litis.univ-lehavre.fr/∼duvallet/ NFP111 — Systèmes et Applications Réparties 2 de 9 Plan Séance consacrée aux exercices sur les RMI Exercices Exercice 0 Exercice 1 Exercice 2 1 Reprendre les exemples du cours et les faire fonctionner : Le programme Reverse. Le programme Reverse avec chargement dynamique des classes. 2 Le programme HelloWorld. 3 Parallélisation du calcul de PI. NFP111 — Systèmes et Applications Réparties 3 de 9 Plan Le programme Reverse Exercices Exercice 0 Exercice 1 Télécharger le code source à l’adresse : Exercice 2 http ://localhost/∼duvallet/Cours/CNAM/ReverseExemple.tgz. Pour la compilation, il suffit de lancer la commande compile.bat. Pour l’exécution, vous devez procéder de la façon suivante : Lancer le rmiregistry avec la commande runrmiregistry.bat. 2 Lancer le serveur avec la commande server.bat. 3 Lancer le client avec la commande client.bat. 1 Comprendre le fonctionnement d’un programme "RMI", Examiner les différentes sources java du programme ainsi que les fichier "BAT" qui ont permis de l’exécuter. NFP111 — Systèmes et Applications Réparties 4 de 9 Plan Le programme HelloWorld Exercices Exercice 0 Exercice 1 Exercice 2 Construire un serveur qui répondra "Bonjour " suivi du nom que le client lui aura donné, aux clients qui feront appels à lui. Les différentes étapes qu’il vous faudra suivre sont : Écrire une interface pour le programme comme par exemple HelloWorldInterface.java. 2 Construire l’implémentation du programme HelloWorld. 3 Construire le serveur et le client permettant de mettre à disposition le programme HelloWorld et de l’appeler. 4 Tester votre programme. 1 NFP111 — Systèmes et Applications Réparties 5 de 9 Plan Distribution du calcul de la valeur de PI (1/5) Exercices Exercice 0 Exercice 1 Exercice 2 Construire une application répartie permettant d’utiliser les ressources de plusieurs serveurs pour calcul la valeur de PI avec une précision donnée (nombre de décimales). En 1995 Bailey, Borwein et Plouffe (BBP) ont montré la relation suivante : À chaque itération sur j, une décimale exacte est ajoutée à la représentation décimale de Pi. Le langage JAVA permet de travailler en arithmétique multiple précision (objets BigDecimal du package java.math), il est donc très simple d’écrire un petit programme qui calcule (avec la formule BBP) et affiche les n premières décimales de PI. NFP111 — Systèmes et Applications Réparties 6 de 9 Plan Distribution du calcul de la valeur de PI (2/5) Exercices Exercice 0 Exercice 1 Exercice 2 import java.math.*; public class CalculDePI { public String calcul (int nbDecimal){ BigDecimal somme = BigDecimal.ZERO; for (int j=0; j<nbDecimal; j++){ BigDecimal part1 = new BigDecimal(4.0/(8*j+1)); BigDecimal part2 = new BigDecimal(2.0/(8*j+4)); BigDecimal part3 = new BigDecimal(1.0/(8*j+5)); BigDecimal part4 = new BigDecimal(1.0/(8*j+6)); BigInteger part5 = BigInteger.valueOf(16).pow (j); part1 = part1.subtract(part2); part1 = part1.subtract(part3); part1 = part1.subtract(part4); part1 = part1.divide (new BigDecimal(part5)); somme = somme.add (part1); } // On ne retourne que les décimales demandées // car le reste est faux BigDecimal nbd = new BigDecimal (10.0).pow (nbDecimal); // On multiplie par 10^nbdecimal somme = somme.multiply (nbd); // On prends la partie entière BigInteger tempSomme = somme.toBigInteger (); return ((new BigDecimal(tempSomme).divide (nbd)).toString ()); } NFP111 — Systèmes et Applications Réparties 7 de 9 Plan Distribution du calcul de la valeur de PI (3/5) Exercices Exercice 0 Exercice 1 Exercice 2 public static void main (String args []){ if (args.length==0) { System.out.println ("Syntaxe : java CalculDePI ####"); System.out.println ("#### représente le nom de décimal de PI" } else { CalculDePI cdpi = new CalculDePI (); for (int i=1; i<Integer.parseInt(args[0]); i++) System.out.println (cdpi.calcul (i)); } } } NFP111 — Systèmes et Applications Réparties 8 de 9 Plan Distribution du calcul de la valeur de PI (4/5) Exercices Exercice 0 Exercice 1 Exercice 2 Distribuer ce programme de façon à que les demandes de calcul effectuées par des clients soient réparties sur plusieurs serveurs. Nous faisons le choix de l’architecture suivante : Serveur 1 Serveur 2 Serveur 3 MASTER Client 1 Client 2 Client 3 Client 4 NFP111 — Systèmes et Applications Réparties 9 de 9 Plan Distribution du calcul de la valeur de PI (5/5) Exercices Exercice 0 Exercice 1 Exercice 2 Lorsqu’un client veut calculer la valeur de PI avec une certaine précision, il effectue sa demande auprès d’un serveur WEB qui va répartir la charge de calcul en fonction du nombre de serveurs dont il dispose. Puis, le serveur maître récoltera les résultats de chaque partie du calcul pour fournir au client le résultat final. On supposera que chaque serveur doit s’identifier auprès du serveur maître lorsqu’il est lancé. Si le serveur maître ne dispose d’aucun serveur alors celui-ci effectue lui même le calcul.