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
- 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é
- 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é
- 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
- 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
-
Séance 5Algo. rép., introductionAlgorithmique répartie, introduction
- AVANT : Lecture section 1 « Éléments introductifs »
- Exercices sur les algorithmes de calcul des dépendances causales et de vague Écho (section 1 du polycopié)
- QCM Éléments introductifs (sur Moodle)
- 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
- Utilisation des threads : diapositives version imprimable
- TP sur la communication multiclient et multithread
- Communication multiclient et processus multithreads
-
Séance 7Algo. rép. électionÉlection
-
Algorithmique répartie :
- AVANT : Lecture section 2 « Élection »
- Exercice sur l'algorithme d'élection par vague Écho de Segall
- QCM Élection (sur Moodle)
-
Mise en œuvre :
- Mise en œuvre — installations, création du projet
- Mise en œuvre — étude de l'ossature de départ de l'application
- Spécification de l'élection
- Élection dans un anneau
- Élection dans une topologie quelconque
- 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)
-
Algorithmique répartie :
-
Séance 8Mise en œuvreMise en œuvre
- Mise en œuvre : au besoin, 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
-
♦Rendu DMRendu DM
-
Date limite : le
2227 mai à 23h55
-
Date limite : le
-
Séance 9Mise en œuvreMise en œuvre
- 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 étude article (1/3)
- Première réunion avec les tuteurs
-
Séance 10Algo. rép. diffusionDiffusion
-
Algorithmique répartie :
- AVANT : Lecture section 3 « Diffusion »
- Exercice sur l'algorithme de diffusion causale de Birman et Joseph
- Exercice sur les diffusions FIFO, causale et atomique
- QCM Diffusion (sur Moodle)
-
Mise en œuvre :
- mise en œuvre de la diffusion causale
- Spécifications des diffusions fiables, FIFO, causale et totale (atomique)
- Algorithme de diffusion causale à base d'horloges vectorielles
-
Algorithmique répartie :
-
♦TP notéTP noté
-
Séance 11Exclusion mutuelleExclusion mutuelle
-
Algorithmique répartie :
- AVANT : Lecture section 4 « Exclusion mutuelle »
- Exercice sur l'algorithme à base de jeton de Ricart et Agrawala
- QCM Exclusion mutuelle (sur Moodle)
-
Mise en œuvre :
-
Selon avancement,
- mise en œuvre de la diffusion causale
- mise en œuvre de l'exclusion mutuelle
-
Selon avancement,
- Spécification de l'exclusion mutuelle
- Algorithmes à base de permissions, structure informationnelle générique
- Algorithmes à base de jeton
-
Algorithmique répartie :
-
Réunion 2/3Réunion LA (2/3)Réunion étude article (2/3)
- Deuxième réunion avec les tuteurs
-
Séance 12Interblocage et terminaisonInterblocage et terminaison
- Présentation de la section 5 « Interblocage »
- 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
- QCM Interblocage (sur Moodle)
- Présentation de la section 6 « Détection de terminaison »
- Exercice sur l'algorithme de Dijkstra et Scholten
- (En autonomie) Exercice sur l'algorithme de Safra
- QCM Détection de terminaison (sur Moodle)
- 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
- 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
-
Réunion 3/3Réunion LA (3/3)Réunion étude article (3/3)
- Troisième réunion avec les tuteurs sur la lecture d'article
-
Séance 13Algo. rép. terminaisonMise en œuvre
-
Selon avancement,
- mise en œuvre de l'exclusion mutuelle
- mise en œuvre de la détection de terminaison
-
Selon avancement,
-
Séance 14Séance 14Exposés (1/2) et suite mise en œuvre
-
Exposés :
Agenda : - 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 - 11h30—11h45 : pause - 11h45—12h30 : article 4, Group Communication Specifications: A Comprehensive Study
-
Exposés :
-
Séance 15Séance 15Exposés (2/2) et suite mise en œuvre
-
Exposés :
Agenda : - 10h00—10h45 : article 5, Total Order Broadcast and Multicast Algorithms: Taxonomy and Survey - 10h45—11h30 : article 6, Consensus on Transaction Commit
-
Mise en œuvre :
-
Selon avancement,
- mise en œuvre de la détection de terminaison
-
Selon avancement,
-
Exposés :
-
♦Rendu finalRendu final
- Rappel des consignes pour le rendu de la série des TP (code et rapport)
- Date limite : le mardi 25 juin à 23h55