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.