RecentChanges
|
FindPage
|
LikePages
|
BackLinks
View Source:
Tme2PC
Note:
This page has been locked and cannot be edited.
!!! Transactions réparties : validation en 2 étapes (2 Phases Commit) !!Préparation * Voir le cours: protocole 2PC, lire le document d'[aide pour le TME 2PC|http://www-bd.lip6.fr/wiki/_media/site/enseignement/master/bdr/aide_tme.pdf] * Installer les fichiers du tme: ** tar zxvf $BD_TOOL/tme-2PC.tgz ** cd tme-2PC ** source config-simjava ** javac -encoding ISO-8859-15 -source 1.4 Exemple1.java ** appletviewer exemple1.html ** régler la vitesse (champ nommé speed) sur 100 environ, puis "run". ** pour les utilisateurs d'Eclipse, vous pouvez aussi lancer l'applet directement dans eclipse (click droit sur le fichier java, puis "run as java applet" ** si appletviewer n'est pas dans le path par défaut, il se trouve dans /usr/lib/jvm/jdk1.8.0_45/bin/appletviewer Dans les exercices suivants recopier les fichiers java et html : * cp Exemple1.java Exemple''NN''.java * cp exemple1.html exemple''NN''.html puis éditer les nouveaux fichiers pour __remplacer__ le nom de la classe Exemple1 par Exemple''NN'' Veiller à __recompiler__ votre exemple avant chaque exécution car les noms de classes ''Participant'' et ''Coordinateur'' existent dans plusieurs exercices. !!Documentation * la doc [java | http://www-ari.ufr-info-p6.jussieu.fr/OUTILS/documentation/doc/Java/jdk1.6/docs/api/index.html] et [simjava | http://www-master.ufr-info-p6.jussieu.fr/2006/Ext/naacke/bdr2009/extra/tme/simjava/simjava2/doc/index.html] (voir les classes Sim_entity et Sim_event du package eduni.simjava) !! Exercice 1 : Prise en main du simulateur * Dérouler la simulation à faible vitesse (''speed entre 100 et 150'') * Expliquer brièvement le fonctionnement du protocole implémenté dans le fichier Exemple1.java * Comprendre les méthodes utilitaires de la classe Entité : envoyer_message, attendre_message_timeout, panne, date, ... !! Exercice 2 : Tolérance aux pannes ! Panne d'un participant * Dans un fichier Exemple__2a__.java, compléter le protocole pour gérer la panne d'un participant avant de s'être déclaré prèt. Suivre le diagramme de la diapo 20 page 10. ** Le coordinateur décide d'abandonner s'il n'a pas reçu tous les votes dans un délai de 300 unités de temps. ** Est-ce que le coordinateur attend que les participants en panne aient repris, avant de répondre à l'application ? ** Que se passe-t-il si un participant qui n'est pas en panne mais trop lent, reçoit la décision d'abandonner alors qu'il n'a pas encore envoyé son vote au coordinateur ? * Dans un fichier Exemple__2b__.java, compléter le protocole pour gérer la panne d'un participant __après__ s'être déclaré prêt (diapo 21 page 11). ** Le coordinateur répète sa décision à un participant qui la lui demande. !Panne du coordinateur (diapo 22 page 11) * Dans un fichier Exemple__2c__.java, compléter le protocole pour gérer la panne du coordinateur __après__ l'étape 1. !!Exercice 3 : Gestion des délais ! Durée maximum de la validation * Dans un fichier Exemple__3a__.java, modifier le protocole pour répondre à l'application dans un délai borné . Quelle sont les réponses possibles du coordinateur à l'application, après un temps D, lorsque la validation n'est pas terminée ? ! Réponse anticipée * Dans un fichier Exemple__3b__.java, modifier le protocole pour signaler, à l'application, l'abandon de la transaction dès qu'un participant a voté pour un abandon. Que fait le coordinateur lorsqu'il reçoit le prochain commit en provenance de l'application alors que les participants n'ont pas encore fini la validation précédente. !!Exercice 4 : Coordonner plusieurs utilisateurs * Dans un fichier Exemple__4__.java, modifier le simulateur pour gérer plusieurs transactions provenant simultanément de 2 applications. !!Exercice 5: Décision majoritaire * Dans un fichier Exemple__5__.java, modifier le protocole pour décider d'une validation dès que la majorité des participants a voté pour une validation. Dans ce cas, que répond le coordinateur aux participants minoritaires qui ont voté pour l'abandon ? !! Documentation diverse * [tutorial | http://www-master.ufr-info-p6.jussieu.fr/2006/Ext/naacke/bdr2009/extra/tme/simjava/simjava2/tutorial/index.html] simjava ---- [LesTravauxDirigés], LesCours, [Accueil]