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 9 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é
Jeudi 11 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é
Vendredi 12 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 25 mai)
- Lire les pages 19 à 23 de la documentation sur JAVA NIO (≈ 30 mn)
-
Séance 4JAVA NIO, asynchronismeJAVA NIO, sélecteurs, asynchronisme
Mardi 16 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
Mercredi 17 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
mardi 23 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 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
Mercredi 24 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
Mercredi 24 mai
Denis Conan et Éric Lallet- 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 jeudi 25 mai à 23h55
-
HPAvant séance 8Travail hors présentiel avant la séance 8
- Faire le QCM élection 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
Jeudi 25 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
-
Réunion 1/3Réunion LA (1/3)Réunion Lecture Articles (1/3)
Vendredi 26 mai- Première réunion avec les tuteurs
-
Séance 9Mise en œuvreMise en œuvre des algorithmes répartis
Mardi 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
-
Séance 10.1Algo. rép. diffusionAlgorithmique répartie, diffusion
Mercredi 31 mai
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
Mercredi 31 mai
Denis Conan-
Selon avancement,
- mise en œuvre de l'élection
- mise en œuvre de la diffusion causale
-
Selon avancement,
-
TP notéTP notéTP noté
Vendredi 2 juin
Denis Conan et Éric Lallet- TP noté sur la partie programmation réseau
-
HPavant séance 11Travail hors présentiel avant la séance 11
-
Séance 11.1Algo. rép. exclusion mutuelleAlgorithmique répartie, exclusion mutuelle
Lundi 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
Lundi 5 juin
Denis Conan-
Selon avancement,
- mise en œuvre de la diffusion causale
- mise en œuvre de l'exclusion mutuelle
-
Selon avancement,
-
HPavant séance 12Travail hors présentiel avant la séance 12
- Faire le QCM exclusion mutuelle 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
Mercredi 7 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 08 juin- Deuxième réunion avec les tuteurs
-
HPavant séance 13Travail hors présentiel avant la séance 13
- Faire le QCM interblocage 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
-
Séance 13.1Algo. rép. terminaisonAlgorithmique répartie, détection de terminaison
Vendredi 9 juin
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
-
Séance 13.2Mise en œuvreMise en œuvre des algorithmes répartis
Vendredi 9 juin
Denis Conan-
Selon avancement,
- mise en œuvre de l'exclusion mutuelle
- mise en œuvre de la détection de terminaison
-
Selon avancement,
-
HPaprès séance 13Travail hors présentiel après la séance 13
- Faire le QCM détection de terminaison 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)
Jeudi 15 juin- Troisième réunion avec les tuteurs
-
HPavant exposés 1/3Travail hors présentiel avant exposés 1/3
- Rendu des diapositives de présentation des études des articles de recherche au plus tard le lundi 19 juin à 22h00
-
Séances 14 et 15Séances 14 et 15Exposés — Articles de recherche
Mardi 20 juin
matin et après-midi
Denis ConanAgenda : - 9h—9h45 : article 5, Total Order Broadcast and Multicast Algorithms: Taxonomy and Survey, - 9h45—10h30 : article 1, Fundamentals of Fault-Tolerant Distributed Computing in Asynchronous Environments, - 10h30—10h45 : pause - 10h45—11h30 : article 2, The Failure Detector Abstraction, - 11h30—12h15 : article 3, A Survey of Rollback-Recovery Protocols in Message-Passing Systems, - 12h15—14h : pause - 14h—14h45 : article 4, Group Communication Specifications: A Comprehensive Study, - 14h45—15h30 : article 6, Consensus on Transaction Commit.
-
HPRendu finalRendu final
Vendredi 23 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 vendredi 23 juin à 23h55