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 7.1Algo. rép. électionAlgorithmique répartie, élection
- AVANT : Lecture section 2 « Élection »
- Exercice sur l'algorithme d'élection par vague Écho de Segall
- QCM Élection (sur Moodle)
- 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
- 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)
-
♦Rendu DMRendu DM
- Date limite : le 22 mai à 23h55
-
Séance 8Mise en œuvreMise en œuvre des algorithmes répartis
- 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
-
Séance 9Mise en œuvreMise en œuvre des algorithmes répartis
- 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 10.1Algo. rép. diffusionAlgorithmique répartie, diffusion
- 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)
- 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
-
Selon avancement,
- mise en œuvre de l'élection
- mise en œuvre de la diffusion causale
-
Selon avancement,
-
♦TP notéTP noté
-
Séance 11.1Algo. rép. exclusion mutuelleAlgorithmique répartie, exclusion mutuelle
- AVANT : Lecture section 4 « Exclusion mutuelle »
- Exercice sur l'algorithme à base de jeton de Ricart et Agrawala
- QCM Exclusion mutuelle (sur Moodle)
- 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
-
Selon avancement,
- mise en œuvre de la diffusion causale
- mise en œuvre de l'exclusion mutuelle
-
Selon avancement,
-
Réunion 2/3Réunion LA (2/3)Réunion étude article (2/3)
- Deuxième réunion avec les tuteurs
-
Séance 12Algo. rép. interblocageAlgorithmique répartie, interblocage
- AVANT : Lecture 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)
- 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 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 13.1Algo. rép. terminaisonAlgorithmique répartie, détection de terminaison
- AVANT : Lecture 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)
- 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
-
Selon avancement,
- mise en œuvre de l'exclusion mutuelle
- mise en œuvre de la détection de terminaison
-
Selon avancement,
-
Séance 14.1Séance 14.1Exposés — Articles de recherche (1/2)
Agenda : à venir
-
Séance 14.2Mise en œuvreMise en œuvre des algorithmes répartis
-
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 (2/2)
Agenda : à venir
- XXhXX—XXhXX : article 6, Consensus on Transaction Commit. -
Séance 15.2Mise en œuvreMise en œuvre des algorithmes répartis
-
Selon avancement,
- mise en œuvre de la détection de terminaison
-
Selon avancement,
-
♦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