Composante
École Nationale Supérieure d'Électrotechnique d'Électronique d'Informatique d'Hydraulique et des Télécommunications
Objectifs
Les systèmes informatiques actuels, qu’ils soient embarqués (avionique, automobile) ou non (systèmes de production par exemple), sont distribués, c’est-à-dire que les applications et les services sont mis en œuvre sur un réseau de calculateurs. La programmation distribuée peut
être définie comme un ensemble d’entités logicielles communicantes qui réalisent une fonction du système.
L’objectif de ce cours est de décrire et de mettre en pratique (1) les concepts de base de la programmation distribuée selon le modèle client-serveur, ainsi que (2) les principes de l’algorithmique distribuée.
Description
La programmation distribuée est illustrée en utilisant les BSD Sockets pour réaliser des applications client-serveur avec différents protocoles de communication, datagramme (UDP) et connecté (TCP). Différents modèles de serveur sont présentés, du serveur séquentiel en mode datagramme au serveur multi-threaded en mode connecté. Les différents modèles sont mis en œuvre dans un bureau d’étude sur un réseau de machines Linux.
La programmation distribuée est abordée selon la problématique de la diffusion fiable de messages vers un groupe de processus et la problématique du consensus.
Un bureau d’étude propose aux étudiants de mettre en œuvre un mécanisme de diffusion fiable et de l’utiliser dans une application peer-to-peer.
Pré-requis obligatoires
Une bonne connaissance de l’algorithmique, des protocoles sur réseau IP, de la programmation en C, des principes des systèmes d’exploitation, en particulier la pratique de Linux, sont nécessaires.