Informations générales
Prérequis
Les étudiants sont invités à vérifier qu'ils possèdent les compétences suivantes :
|
Objectifs du module
À l'issue du module, les étudiants seront capables, dans le cadre du développement d’une application répartie de petite taille, mais réaliste, et dont le cahier des charges est fourni, de :
À l'issue du module, les étudiants seront aussi capables d'étudier en groupe des articles de recherche sur la thématique de la tolérance aux fautes, d'en discuter avec un spécialiste, et ensuite, d'en faire une présentation synthétique aux autres étudiants de la classe. |
Mode d'évaluation
Note =
|
Tableau de bord
Thème« programmation
d'application répartie avec JAVA NIO » |
Thème« algorithmique répartie » | Thème« mise en œuvre d'algorithmes répartis » | ||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
|
Séquencement
-
SujetsContenu
Notions clés -
Séance 1IntroductionIntroduction au module et à JAVA NIO
Mardi 7 mai
Denis Conan puis Éric Lallet- Présentation du module : diapositives
- Introduction à JAVA NIO : diapositives (version imprimable)
- Manipulation de fichiers avec JAVA NIO : TP Manipulation de fichiers
- Installer le devoir maison
- Commencer la première étape du devoir maison
- Buffers et channels de JAVA NIO
- (optionnel) Buffer de type direct
- (optionnel) Mapping de fichier en mémoire
-
HPavant séance 2Travail hors présentiel avant la Séance 2
- Lire les pages 1 à 13 de la documentation sur JAVA NIO (≈ 30 mn)
- Terminer la première étape du devoir maison
- (optionnel) les usages des buffers optimisés : TP Utilisation avancée des ByteBuffer
- Lire les tutoriels sur les interfaces avec des constantes, le static import, les énumérations (≈ 20 mn)
-
Séance 2JAVA NIO, comm. mode déconnectéJAVA NIO, communication en mode déconnecté
Mardi 14 mai
Éric Lallet- Adressage TCP—UDP/IP et communication avec JAVA NIO : diapositives (version imprimable)
- Présentation de la bibliothèque Log4j : diapositives (version imprimable)
- Communication en mode « échange de messages » (datagram) : TP communication en mode datagram
- Première partie des communications en mode connecté : TP flot de données versus datagram
- Communication en mode datagram (service d'UDP)
- Classe DatagramChannel de JAVA NIO
-
HPavant séance 3Travail hors présentiel avant la séance 3
- Commencer la deuxième étape du devoir maison
- Terminer le TP
- Lire le tutoriel sur la sérialisation des objets JAVA (≈ 45 mn)
-
Séance 3JAVA NIO, comm. mode connectéJAVA NIO, communication mode connecté
Mercredi 15 mai
Éric Lallet- Envoi d'information avec TCP : diapositives (version imprimable)
- Interface fonctionelle et expression lambda : diapositives (version imprimable)
- Seconde partie des communications en mode connecté : TP échange d'objets sérialisés en mode connecté
- Communication en mode connecté (service de TCP)
- Classes SocketChannel et ServerSocketChannel de JAVA NIO
- Transmission d'objets sérialisés
-
HPavant séance 4Travail hors présentiel avant la séance 4
- Commencez la troisième étape du devoir maison (à terminer avant le 27 mai)
- Lire les pages 19 à 23 de la documentation sur JAVA NIO (≈ 30 mn)
-
Séance 4JAVA NIO, asynchronismeJAVA NIO, sélecteurs, asynchronisme
Vendredi 17 mai
Éric Lallet- Communications asynchrones avec JAVA NIO : diapositives ( version imprimable)
- Classe Selector de JAVA NIO
- TP sur la communication en mode asynchrone
- Communications asynchrones avec la classe Selector de JAVA NIO
-
HPavant séance 5Travail hors présentiel avant la séance 5
- Lecture de la section « introduction » du cours (section 1 du polycopié)
-
Séance 5Algo. rép., introductionAlgorithmique répartie, introduction
Mardi 21 mai
Denis Conan- Exercices sur les algorithmes de calcul des dépendances causales et de vague Écho (section 1 du polycopié)
- Modèle de système réparti, machine à états, synchrone versus asynchrone, type de défaillance
- Convention d'écriture des algorithmes répartis
- Ordre causal, horloge (scalaire, vectorielle, matricielle)
- Algorithmes de calcul des dépendances causales
- Algorithmes de vague et de traversée de graphe
-
HPavant séance 6Travail hors présentiel avant la séance 6
- Lire le tutoriel sur les threads jusqu'à la page « Intrinsic Locks and Synchronization » (≈ 1 h)
-
Séance 6JAVA NIO, asynchronismeJAVA NIO, asynchronisme (suite), multiclient, multithreading
Mercredi 22 mai
Éric Lallet- Utilisation des threads : diapositives version imprimable
- TP sur la communication multiclient et multithread
- Communication multiclient et processus multithreads
-
HPavant séance 7Travail hors présentiel avant la séance 7
- Faire le QCM introduction (sur Moodle) avant la séance 7
- Lecture de la section « élection » du cours (section 2 du polycopié)
-
Séance 7.1Algo. rép. électionAlgorithmique répartie, élection
Mardi 28 mai
Denis Conan- Exercice sur l'algorithme d'élection par vague Écho de Segall
- Spécification de l'élection
- Élection dans un anneau
- Élection dans une topologie quelconque
-
Séance 7.2Mise en œuvreMise en œuvre des algorithmes réparties
Mardi 28 mai
Denis Conan- Mise en œuvre — installations, création du projet
- Mise en œuvre — étude de l'ossature de départ de l'application
- Types paramétrés, inférence de type (diamond), type Joker
- Classes anonymes, interfaces avec attributs
- Idiomes: objets et collections non modifiables/immuables, intercepteur (p.ex. via default method d'interface)
- Import static, bloc de code static
- Types énumérés, constructeur, ordinal(), values()
- Synchronisation, synchronized(ref)
-
HPRendu DMRendu DM
- Rendu du devoir maison JAVA NIO avant le 27 mai à 23h55
-
HPAvant séance 8Travail hors présentiel avant la séance 8
- Faire le QCM élection (sur Moodle) avant la séance 8
- Terminer l'étude de l'ossature de départ de l'application répartie
-
Séance 8Mise en œuvreMise en œuvre des algorithmes répartis
Mercredi 29 mai
Denis Conan et Éric Lallet- Mise en œuvre : si ce n'est le cas, terminer l'étude de l'ossature de départ de l'application répartie
- Mise en œuvre de l'élection
- Scénarios et tests d'intégration avec retardement de transmissions de messages
-
Séance 9Mise en œuvreMise en œuvre des algorithmes répartis
Jeudi 30 mai
Denis Conan et Éric Lallet- Mise en œuvre de l'élection
- Scénarios et tests d'intégration avec retardement de transmissions de messages
-
HPavant séance 10Travail hors présentiel avant la séance 10
- Lecture de la section « diffusion » du cours (section 3 du polycopié)
- Mise en œuvre de l'élection
-
TP notéTP notéTP noté
Vendredi 31 mai
Denis Conan et Éric Lallet- TP noté sur la partie programmation réseau
-
Séance 10.1Algo. rép. diffusionAlgorithmique répartie, diffusion
Lundi 3 juin
Denis Conan- Exercice sur l'algorithme de diffusion causale de Birman et Joseph
- Exercice sur les diffusions FIFO, causale et atomique
- Spécifications des diffusions fiables, FIFO, causale et totale (atomique)
- Algorithme de diffusion causale à base d'horloges vectorielles
-
Séance 10.2Mise en œuvreMise en œuvre des algorithmes répartis
Lundi 3 juin
Denis Conan-
Selon avancement,
- mise en œuvre de l'élection
- mise en œuvre de la diffusion causale
-
Selon avancement,
-
HPavant séance 11Travail hors présentiel avant la séance 11
- Faire le QCM diffusion (sur Moodle) avant la séance 11
- Lecture de la section « exclusion mutuelle » du cours (section 4 du polycopié)
- Travail sur la mise en œuvre de la diffusion
-
Séance 11.1Algo. rép. exclusion mutuelleAlgorithmique répartie, exclusion mutuelle
Mercredi 5 juin
Denis Conan- Exercice sur l'algorithme à base de jeton de Ricart et Agrawala
- Spécification de l'exclusion mutuelle
- Algorithmes à base de permissions, structure informationnelle générique
- Algorithmes à base de jeton
-
Séance 11.2Mise en œuvreMise en œuvre des algorithmes répartis
Mercredi 5 juin
Denis Conan-
Selon avancement,
- mise en œuvre de la diffusion causale
- mise en œuvre de l'exclusion mutuelle
-
Selon avancement,
-
Réunion 1/3Réunion LA (1/3)Réunion Lecture Articles (1/3)
Vendredi 7 juin- Première réunion avec les tuteurs
-
HPavant séance 12Travail hors présentiel avant la séance 12
- Faire le QCM exclusion mutuelle (sur Moodle) avant la séance 12
- Lecture de la section « interblocage » du cours (section 5 du polycopié)
- Selon avancement, travail sur la mise en œuvre de la diffusion causale et de l'exclusion mutuelle
-
Séance 12Algo. rép. interblocageAlgorithmique répartie, interblocage
Lundi 10 juin
Denis Conan- Exercice sur la prévention de l'interblocage dans le modèle ET
- Exercice sur la construction de coupures cohérentes pour la détection d'interblocage
- Modèles d'interblocage ET, OU—ET
- Condition de déblocage, définition de l'interblocage
- Stratégie contre l'interblocage (prévention, évitement, et détection puis résolution)
- Prévention dans le modèle ET avec les algorithmes de Rosenkrantz, Stearns et Lewis
- Détection d'interblocage à base de construction de coupures cohérentes, algorithme de Chandy et Lamport
-
Réunion 2/3Réunion LA (2/3)Réunion Lecture Articles (2/3)
Jeudi 13 juin- Deuxième réunion avec les tuteurs
-
HPavant séance 13Travail hors présentiel avant la séance 13
- Faire le QCM interblocage (sur Moodle) avant la séance 13
- Lecture de la section « détection de terminaison » du cours (section 6 du polycopié)
- Travail sur la mise en œuvre de l'exclusion mutuelle
- Rendu des diapositives de présentation des études des articles de recherche au plus tard la veille de la présentation
-
Séances 13.1Séance 13.1Exposés — Articles de recherche (1/3)
Lundi 17 juin après-midi
Denis ConanAgenda : - 14h30—15h15 : article 2, The Failure Detector Abstraction, - 15h15—16h00 : article 6, Consensus on Transaction Commit.
-
Séance 13.2Algo. rép. terminaisonAlgorithmique répartie, détection de terminaison
Lundi 17 juin aprés-midi
Denis Conan- Exercice sur l'algorithme de Dijkstra et Scholten
- Spécification de la détection de terminaison, modèle d'interblocage OU, configuration terminale et finale, états actif et passif, algorithme de contrôle
- Détection de terminaison par construction de coupure cohérente
- Détection de terminaison par calcul du graphe d'exécution, algorithme de Dijkstra et Scholten pour un arbre d'exécution, de Shavit et Francez pour un graphe quelconque d'exécution, de Safra dans une topologie des processus en anneau
-
HPaprès séance 13Travail hors présentiel après la séance 13
- Faire le QCM détection de terminaison (sur Moodle) après la séance 13
- Travail sur les mises en œuvre
-
Réunion 3/3Réunion LA (3/3)Réunion Lecture Articles (3/3)
Mardi 18 juin- Troisième réunion avec les tuteurs
-
Séance 14.1Séance 14.1Exposés — Articles de recherche (2/3)
Jeudi 20 juin matin
Denis ConanAgenda : - 10h00—10h45 : article 1, Fundamentals of Fault-Tolerant Distributed Computing in Asynchronous Environments, - 10h45—11h30 : article 3, A Survey of Rollback-Recovery Protocols in Message-Passing Systems.
-
Séance 14.2Mise en œuvreMise en œuvre des algorithmes répartis
Jeudi 20 juin matin
Denis Conan-
Selon avancement,
- mise en œuvre de l'exclusion mutuelle
- mise en œuvre de la détection de terminaison
-
Selon avancement,
-
Séance 15.1Séance 15.1Exposés — Articles de recherche (3/3)
Vendredi 21 juin matin
Denis ConanAgenda : - 10h00—10h45 : article 5, Total Order Broadcast and Multicast Algorithms: Taxonomy and Survey, - 10h45—11h30 : article 4, Group Communication Specifications: A Comprehensive Study.
-
Séance 15.2Mise en œuvreMise en œuvre des algorithmes répartis
Vendredi 21 juin
Denis Conan-
Selon avancement,
- mise en œuvre de la détection de terminaison
-
Selon avancement,
-
HPRendu finalRendu final
Mardi 25 juin
- Rappel des consignes pour le rendu de la série des TP (code et rapport)
- Déposer dans le dépôt Git de GitLab la mise en œuvre de la détection de terminaison avant le mardi 25 juin à 23h55