Badr Benmammar badr.benmammar@gmail.com Master Réseaux et Systèmes Distribués (RSD) Algorithmique des systèmes et applications réparties Badr Benmammar badr.benmammar@gmail.com
Plan Pré requis Introduction aux systèmes distribués Programmation réseau en Java : Socket Temps dans un système distribué Introduction aux composants logiciels (JavaBeans) Introduction aux Java Server Pages (JSP) Algorithmique distribuée Exclusion mutuelle distribuée Diffusion atomique Élection d’un maître Consensus
Plan – cours 0 Gestion des fichiers Classe File Quelques flots : FileReader : lire un fichier caractère par caractère FileWriter : écrire des caractères dans un fichier PrintWriter : println et print dans un fichier BufferedReader : rechercher un mot dans un fichier Sérialisation : enregistrer et restaurer des objets L’interface Serializable ObjectOuputStream : écrire des objets dans un fichier ObjectInputStream : lire des objets à partir d’un fichier
Plan – cours 1 Partie I : Systèmes distribués Définition Objectifs Avantages et inconvénients Applications réparties Partie II : Communication dans un système distribué Manières de communication Modèles de communication Type de communication Partie III : Algorithmique distribuée Voies d’études des systèmes distribués Éléments de base d’un système distribué Modèles conceptuels de systèmes distribués
Plan – cours 2 Définition Modes de communication Exemple de communication Schémas d’écriture des sockets Créer un socket sans délai d’expiration Créer un socket avec un timeout Créer un serveur de socket à l’écoute sur un port Lecture directe du stream d’un socket Ecriture directe dans le stream d’un socket Lecture et écriture de plus haut niveau Lecture ligne par ligne de texte d’un socket Ecriture de texte dans un socket Lecture de données Java à partir d’un socket Ecriture de données Java dans un socket Transmission de données en passant par une chaîne de caractères Transmission d’objet par les sockets Communications entre un applet Java et un serveur à l’aide des sockets
Plan – cours 3 Partie 1 : Temps dans un système distribué Temps logique Chronogramme Dépendance causale Parallélisme logique Délivrance FIFO Causale Partie 2 : Horloges logiques Estampille (horloge de Lamport) Vectorielle (horloge de Mattern) Matricielle
Plan – cours 4 Introduction aux composants logiciels (JavaBeans) Objet + Pattern = Bean Patterns d’un Bean Pattern des propriétés simples Sérialisation en XML … Introduction aux Java Server Pages (JSP) Pourquoi les JSP ? JSP vs Servlet Code des JSP Utiliser une classe java dans une JSP Déboguer les JSP Enchaîner les pages JSP JSP et JavaBeans JSP et MySQL
Plan – cours 5 Définition Quelques exemples Méthodes pour gérer l’exclusion mutuelle distribuée Contrôle par un coordinateur Algorithme d’exclusion mutuelle centralisé implanté en réparti Contrôle par jeton Algorithme de « Le Lann » en 1977 Anneau sur lequel circule le jeton en permanence Algorithme de « Ricart et Agrawala » en 1983 Jeton affecté à la demande des processus Contrôle par permission Permission individuelle : Algorithme de « Ricart et Agrawala » en 1981 Permission par arbitre : Algorithme de Maekawa en 1985 Non traité dans ce cours
Plan – cours 6 Diffusion Basique Fiable Ordonnancement FIFO Causal Total Diffusion atomique Types de diffusion Relations entre les diffusions
Plan – cours 7 Élection Motivations Principes Phases d’Élection Phase de préparation Phase de décision Phase de proclamation du résultat Algorithmes d’Élections Algorithme de Chang et Roberts (1979)
Plan – cours 8 Consensus : principe général Conditions à valider Consensus dans différents environnements (communications fiables dans tous les cas) : Sans faute Synchrone, panne franche Asynchrone, panne franche Asynchrone, fautes byzantines Synchrone, fautes byzantines Problème des généraux byzantins Consensus : résumé