0% ont trouvé ce document utile (0 vote)
4 vues43 pages

Introduction à la Programmation Distribuée

Le cours de Programmation Distribuée vise à enseigner les concepts fondamentaux des applications distribuées, leur développement dans un environnement JEE, et leur conception. Il couvre des sujets tels que les systèmes distribués, les techniques de communication à distance, et les clients légers avec Java EE. Les étudiants apprendront également les défis liés à la fiabilité, la sécurité et la transparence dans les systèmes distribués.

Transféré par

tebiejoel1
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PPTX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
4 vues43 pages

Introduction à la Programmation Distribuée

Le cours de Programmation Distribuée vise à enseigner les concepts fondamentaux des applications distribuées, leur développement dans un environnement JEE, et leur conception. Il couvre des sujets tels que les systèmes distribués, les techniques de communication à distance, et les clients légers avec Java EE. Les étudiants apprendront également les défis liés à la fiabilité, la sécurité et la transparence dans les systèmes distribués.

Transféré par

tebiejoel1
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PPTX, PDF, TXT ou lisez en ligne sur Scribd

Année académique 2024 — 2025

Programmation
Distribuée
Licence 3 Développement d’Applications

Chargé du cours:

SEWAVI Kokou Maurice

Inspiré du cours d’Eric Cariou


Programmation Distribuée
Objectifs du cours

 Comprendre ce qu’est une application distribuée.


 Comprendre la problématique de leur développement.
 Apprendre les bases de leur développement dans un
environnement JEE
 Apprendre à les concevoir
Plan Du Cours
 Introduction aux systèmes distribués
 Problématique, concepts généraux
 Partie « programmation des systèmes distribués »
 Techniques de communication à distance
Sockets TCP/UDP (en C et Java)
Middleware : Java RMI
 En complément : programmation Java
 Entrées/sorties (flux) et concurrence en Java (threads)
 Clients légers avec Java EE : servlets et JSP
 La notion de composant : concepts, mise en œuvre avec les EJB et
les Services web
Année académique 2024 — 2025

INTRODUCTION
Systèmes GENERALE
distribués
 Système distribué en opposition à système centralisé
 Système centralisé : tout est localisé sur la même machine et
accessible par le programme
 Système logiciel s'exécutant sur une seule machine
 Accédant localement aux ressources nécessaires
(données, code, périphériques, mémoire ...)
 Système distribué : une définition parmi d'autres (Andrew
Tannenbaum)
 Ensemble d'ordinateurs indépendants connectés en réseau et
communiquant via ce réseau
 Cet ensemble apparaît du point de vue de l'utilisateur comme une
unique entité
Année académique 2024 — 2025

Systèmes
distribués
 Vision matérielle d'un système distribué : architecture matérielle
 Machine multi-processeurs avec mémoire partagée, CPU
multicore
 Cluster d'ordinateurs dédiés au calcul/traitement massif parallèle
 Ordinateurs standards connectés en réseau
 Vision logicielle d'un système distribué
 Système logiciel composé de plusieurs entités logicielles
s'exécutant indépendamment et en parallèle sur un ensemble
d'ordinateurs connectés en réseau
 Dans ce cours
 Conception logicielle des systèmes distribués
 Par défaut sur une architecture matérielle de type ordinateurs
connectés en réseau
Année académique 2024 — 2025

Systèmes
distribués
 Système distribué
 Réalisation d'une certaine tâche globale par un ensemble
d'entités logicielles distribuées
 L'utilisateur a un point d'accès à ce système
 L'utilisateur et/ou des entités n'ont pas besoin de connaître le
détail de l'architecture du système (transparence)
 « Un système distribué est un système qui m'empêche de
travailler quand une machine dont je n'ai jamais entendu parler
tombe en panne » Leslie Lamport
 Exemples de systèmes distribués
 Serveur de fichier
 Web
 Calculs distribués
Année académique 2024 — 2025
Exemples de systèmes
distribués
 Serveur de fichiers
 Accès aux fichiers de l'utilisateur quelque soit la machine
utilisée
 Machines d’un département informatique
 Un serveur de fichier
 Clients
 Physiquement : Les fichiers se trouvent uniquement sur le serveur
 Virtuellement : accès à ces fichiers à partir de n'importe quelle
machine cliente en faisant « croire » que ces fichiers sont stockés
localement
 Arborescence de fichiers Unix : arborescence unique avec
 Répertoires physiquement locaux
 Répertoires distants montés via le protocole NFS (Network File
System)
Année académique 2024 — 2025
Exemples de systèmes
distribués
 Serveur de fichiers (Suite)
 Intérêts
 Accès aux fichiers à partir de n'importe quelle machine
 Système de sauvegarde associé à ce serveur
 Transparent pour l'utilisateur
 Inconvénients
 Si réseau ou le serveur plante : plus d'accès aux fichiers pour
personne
Année académique 2024 — 2025
Exemples de systèmes
distribués
 Autre exemple de système distribué : Web
 Un serveur web auquel se connecte un nombre quelconque de
navigateurs web (clients)
 Accès à distance à de l'information
 Accès simple
Serveur renvoie une page HTML statique qu'il
stocke localement

 Traitement plus complexe


Serveur interroge une base de données pour générer
dynamiquement le contenu de la page
 Transparent pour l'utilisateur : les informations s'affichent dans
son navigateur quelque soit la façon dont le serveur les génère
Année académique 2024 — 2025
Exemples de systèmes
distribués
 Calculs scientifiques
 Plusieurs architectures matérielles généralement utilisées
 Ensemble de machines identiques reliées entre elles par un
réseau dédié et très rapide (cluster)
 Ensemble de machines hétérogènes connectées dans un
réseau local ou bien encore par Internet (grille)
 Principe général
 Un (ou des) serveur distribue des calculs aux machines clients
 Un client exécute son calcul puis renvoie le résultat au serveur
 Avantage
 Utilisation d'un maximum de ressources de calcul
 Inconvénient
 Si le réseau ou le serveur plante, arrêt du système
Année académique 2024 — 2025
Intérêts des systèmes
distribués
 Utiliser et partager des ressources distantes
 Système de fichiers : utiliser ses fichiers à partir de n'importe
quelle machine
 Imprimante : partagée entre toutes les machines
 Optimiser l'utilisation des ressources disponibles
 Calculs scientifiques distribués sur un ensemble de machines
 Système plus robuste
 Duplication pour fiabilité : deux serveurs de fichiers dupliqués,
avec sauvegarde
 Plusieurs éléments identiques pour résister à la montée en charge
...
Année académique 2024 — 2025

Inconvénients/points faibles
 Si problème au niveau du réseau
 Le système marche mal ou plus du tout
 Bien souvent, un élément est central au fonctionnement du
système : serveur
 Si serveur plante : plus rien ne fonctionne
 Goulet potentiel d'étranglement si débit d'information très
important
 Sans élément central
 Gestion du système totalement décentralisée et distribuée
 Nécessite la mise en place d'algorithmes +/- complexes
Année académique 2024 — 2025
Particularités des systèmes
distribués
 Système distribué = éclaté
 Connaissance des éléments formant le système : besoin
d'identification et de localisation
 Gestion du déploiement et de la présence d'éléments essentiels
 La Communication à distance est centrale
 Techniques et protocoles de communication
 Contraintes du réseau : fiabilité (perte de données) et temps de
propagation (dépendant du type de réseau et de sa charge)
 Naturellement concurrent et parallèle
 Chaque élément sur chaque machine est autonome
 Besoin de synchronisation, coordination entre éléments distants
et pour l'accès aux ressources (exclusion mutuelle ...)
Année académique 2024 — 2025
Particularités des systèmes
distribués
 Hétérogénéité
 Des machines utilisées (puissance, architecture matérielle...)
 Des systèmes d'exploitation tournant sur ces machines
 Des langages de programmation des éléments logiciels formant le
système
 Des réseaux utilisés : impact sur performances, débit, disponibilité
...
 Réseau local rapide
 Internet
 Réseaux sans fil
Année académique 2024 — 2025
Particularités des systèmes
distribués
 Exemple hétérogénéité des données : codage des entiers
 Entier sur 32 bits (4 octets)
 Ex : (010AD3F2)16 = 17486834
 A partir de l'adresse de l'entier en mémoire, les 4 octets ne sont
pas toujours placés dans le même ordre
 Big Endian (ex : x86) : octet de poids fort d'abord |01|0A|D3|F2|
Réseau local rapide
 Little Endian (ex : SPARC) : octet de poids faible d'abord |F2|
D3|0A|01|
 Si un ordinateur à processeur x86 envoie un entier à un
ordinateur à processeur SPARC, les nombres seront différents
 (010AD3F2)16 est interprété comme (F2D30A01)16 soit la valeur
(en non signé) de 4073916929
Année académique 2024 — 2025
Particularités des systèmes
distribués
 Exemple hétérogénéité des données : codage des chaînes de
caractères
 Principe courant : un tableau de char (octet) avec information sur
la taille ou la fin de chaîne
 En C : code ASCII de valeur 0 pour marquer la fin de la chaîne |
B|o|n|j|o|u|r|\0|
 En Pascal : le premier caractère est un nombre (codé via un
code ASCII) précisant la longueur de la chaîne |\7|B|o|n|j|o|u|r|
 Les deux tableaux ont la même taille (8 octets) mais problème en
cas d'échange
 De C vers Pascal : le code ASCII du premier caractère 'B' est
considéré comme la taille de la chaîne soit 6 caractères au lieu
de 7
Année académique 2024 — 2025
Particularités des systèmes
distribués
 De Pascal vers C : le premier caractère '\7' sera considéré
comme faisant partie de la chaîne (ici le caractère de contrôle
BELL) et la chaîne se terminera jusqu'à qu'un '\0' soit trouvé

 Dans les deux cas, on considérera qu'une zone mémoire


débordant du tableau de la chaîne en fait partie
Année académique 2024 — 2025

Fiabilité des systèmes distribués


 Nombreux points de pannes ou de problèmes potentiels
 Réseau
 Une partie du réseau peut-être inaccessible
 Les temps de communication peuvent varier considérablement
selon la charge du réseau
 Le réseau peut perdre des données transmises
 Machine
 Une ou plusieurs machines peuvent planter, engendrant une
paralysie partielle ou totale du système
 Peut augmenter la fiabilité par redondance, duplication de
certains élément
 Mais rend plus complexe la gestion du système
 Tolérance aux fautes
 Capacité d'un système à gérer et résister à un ensemble de
problèmes
Année académique 2024 — 2025

Sécurité des systèmes distribués


 La Nature d'un système distribué fait qu'il est beaucoup plus sujet
à des attaques
 Les Communications à travers le réseau peuvent être
interceptées
 On ne connaît pas toujours bien un élément distant avec qui on
communique

 Solutions

 Connexion sécurisée par authentification avec les éléments


distants
 Cryptage des messages circulant sur le réseau
Année académique 2024 — 2025

Transparences
 Transparence
 Fait pour une fonctionnalité, un élément d'être invisible ou caché à
l'utilisateur ou un autre élément formant le système distribué
 Devrait plutôt parler d'opacité dans certains cas ...

 But est de cacher l'architecture, le fonctionnement de l'application


ou du système distribué pour apparaître à l'utilisateur comme une
application unique cohérente
 L'ISO définit plusieurs transparences (norme RM-ODP)

 Accès, localisation, concurrence, réplication, mobilité, panne,


performance, échelle
Année académique 2024 — 2025

Transparences
 Transparence d'accès
 Accès à des ressources distantes aussi facilement que
localement
 Accès aux données indépendamment de leur format de
représentation
 Transparence de localisation
 Accès aux éléments/ressources indépendamment de leur
localisation
 Transparence de concurrence
 Exécution possible de plusieurs processus en parallèle avec
utilisation de ressources partagées
 Transparence de réplication
 Possibilité de dupliquer certains éléments/ressources pour
augmenter la fiabilité
Année académique 2024 — 2025

Transparences
 Transparence de mobilité
 Possibilité de déplacer des éléments/ressources
 Transparence de panne
 Doit supporter qu'un ou plusieurs éléments tombe en Panne
 Transparence de performance
 Possibilité de reconfigurer le système pour en augmenter les
performances
 Transparence d'échelle
 Doit supporter l'augmentation de la taille du système (nombre
d'éléments, de ressources ...)
Année académique 2024 — 2025

Transparences
 Un système donné va offrir un certain nombre de
transparences
 Souvent au minimum transparences de localisation, d'accès et
de concurrence
 Système distribué ouvert
 Peut être étendu en nombre d'éléments matériels le constituant
 Possibilité d'ajouts de nouveaux services ou de ré-
implémentation de services existants au niveau logiciel
 Fonctionnement se base sur des interfaces d'interactions
clairement définies
Année académique 2024 — 2025

Rappel sur les réseaux


 Norme OSI de l'ISO : architecture en 7 couches
Année académique 2024 — 2025

Rappel sur les réseaux


 Modèle de communication en couche
 Une couche a un rôle particulier
 Une couche d'une entité communique avec une couche de même
niveau d'une autre entité en respectant un certain protocole de
communication
 Pour communiquer avec une autre entité, une couche utilise les
services de sa couche locale inférieure
 Données échangées entre 2 couches : trames ou paquets
 Données structurées
 Taille bornée
 Deux parties
Données de la couche supérieure à transmettre
Données de contrôle de la communication entre couches
Année académique 2024 — 2025

Rappel sur les réseaux


 Organisation des trames/paquets entre couches N et N+1
Année académique 2024 — 2025

Rappel sur les réseaux


 Modèle de communication en couche
 Une couche a un rôle particulier
 Une couche d'une entité communique avec une couche de même
niveau d'une autre entité en respectant un certain protocole de
communication
 Pour communiquer avec une autre entité, une couche utilise les
services de sa couche locale inférieure
 Données échangées entre 2 couches : trames ou paquets
 Données structurées
 Taille bornée
 Deux parties
Données de la couche supérieure à transmettre
Données de contrôle de la communication entre couches
Année académique 2024 — 2025

Rappel sur les réseaux


 Norme OSI de l'ISO : architecture en 7 couches
 Physique: transmission des données binaires sur un support
physique
 Liaison : gestion d'accès au support physique, assure que les
données envoyées sur le support physique sont bien reçues par
le destinataire
 Réseau : transmission de données sur le réseau, trouve les
routes à travers un réseau pour accéder à une machine distante
 Transport : transmission (fiable) entre 2 applications
 Session : synchronisation entre applications, reprises sur pannes
 Présentation : indépendance des formats de représentation des
données (entiers, chaînes de caractères...)
 Application : protocoles applicatifs (HTTP, FTP, SMTP ...)
Année académique 2024 — 2025

Rappel sur les réseaux


Année académique 2024 — 2025

Rappel sur les réseaux


 Réseaux TCP/IP
 Réseaux locaux, internet ...
 Couche réseau : IP (Internet Protocol)
 Gestion des communications et connexions entre les machines
à travers le réseau
 Recherche des routes à travers le réseau pour accéder à une
machine
 Couche transport
 TCP : connexion virtuelle directe et fiable entre 2 applications
 UDP : mode datagramme
Envoi de paquets de données
Pas de gestion de l'ordre d'arrivée, pas de gestion
des paquets perdus
Année académique 2024 — 2025

Rappel sur les réseaux


 TCP ou UDP
 Communication entre systèmes aux extrémités
 Pas de visibilité des systèmes intermédiaire
Année académique 2024 — 2025

Communication
 Système distribué
 Ensemble d'entités logicielles communiquant entre-elle
 Entités logicielles s'exécutent sur des machines reliées entre elles
par un réseau
 Communication entre entités logicielle
 Le plus basique : directement en appelant les services des
couches TCP ou UDP
 Plus haut niveau : définition de couches offrant des services plus
complexes
 Couche réalisée en s'appuyant sur les couches TCP/UDP
 Exemple de service : appel d'une procédure chez une entité
distante
 Notion de middleware (intergiciel)
Année académique 2024 — 2025

Communication
 Middleware ou intergiciel : couche logicielle
 S'intercale entre le système d'exploitation/réseau et les éléments
de l'application distribuée
 Offre un ou plusieurs services de communication entre les
éléments formant l'application ou le système distribué
Année académique 2024 — 2025

Communication
 But et fonctionnalités d'un middleware
 Gestion de l'hétérogénéité
 Langage de programmation, systèmes d'exploitation utilisés ...
 Offrir des abstractions de communication de plus haut
niveau
 Appel d'une procédure à distance sur un élément
 Communication via une mémoire partagée
 Diffusion d'événements
 ...
 Offrir des services de configuration et de gestion du système
 Service d'annuaire pour connaître les éléments présents
 Services de persistance, de temps, de transaction, de
sécurité ..
Année académique 2024 — 2025

Communication

 Protocole de communication
 Ensemble de règles et de contraintes gérant une communication
entre plusieurs entités
 But du protocole
 Se mettre d'accord sur la façon de communiquer pour bien se
comprendre
 S'assurer que les données envoyées sont bien reçues
 Plusieurs types d'informations circulent entre les entités
 Les données à échanger
 Les données de contrôle et de gestion du protocole
Année académique 2024 — 2025

Communication

 Exemple basique de protocole


 Une entité envoie des données à une deuxième entité
 La deuxième entité envoie un acquittement pour prévenir qu'elle a
bien reçue les données
 Mais si utilise un réseau non fiable ou aux temps de
transmission non bornés
 Comment gérer la perte d'un paquet de données ?
 Comment gérer la perte d'un acquittement ?
 Comment gérer le fait qu'un message peut arriver avant un autre
alors qu'il a été émis après ?
Année académique 2024 — 2025

Modèles d'interaction

 Les éléments distribués interagissent, communiquent entre


eux selon plusieurs modèles possibles
 Client/serveur
 Diffusion de messages
 Mémoire partagée
 Pair à pair…
 Abstraction/primitive de communication basique
 Envoi de message d'un élément vers un autre élément
 A partir d'envois de messages, peut construire les protocoles de
communication correspondant à un modèle d'interaction
Année académique 2024 — 2025

Modèles d'interaction

 Rôle des messages


 Données échangées entre les éléments
 Demande de requête
 Résultat d'une requête
 Donnée de toute nature …
 Gestion, contrôle des protocoles
 Acquittement : message bien reçu
 Synchronisation, coordination
Année académique 2024 — 2025

Modèle client/serveur

 Deux rôles distincts


 Client : demande que des requêtes ou des services lui soient
rendus
 Serveur : répond aux requêtes des clients
 Interaction
 Message du client vers le serveur pour faire une requête
 Exécution d'un traitement par le serveur pour répondre à la
requête
 Message du serveur vers le client avec le résultat de la requête
 Exemple : serveur Web
 Client : navigateur Web de l'utilisateur
 Requêtes : récupérer le contenu d'une page HTML gérée ou
générée par le serveur
Année académique 2024 — 2025

Modèle client/serveur
 Modèle le plus répandu
 Fonctionnement simple
 Abstraction de l'appel d'un service : proche de l'appel d'une
opération sur un élément logiciel
 Interaction de base en programmation
 Particularités du modèle
 Liens forts entre le client et le serveur
 Un client peut aussi jouer le rôle de serveur (et vice-versa) dans
une autre interaction
 Nécessité généralement pour le client de connaître précisément le
serveur (sa localisation)
 Ex : URL du site Web
 Interaction de type « 1 vers 1 »
 1 client communique avec 1 serveur à un moment donné
Année académique 2024 — 2025

Diffusion de messages
 Deux rôles distincts
 Émetteur : envoie des messages (ou événements) à destination
de plusieurs récepteurs
 Diffusion (broadcast) : à tous ceux qui sont présents
 A un sous-ensemble de récepteurs : multicast
 Récepteurs : reçoivent les messages envoyés
 Peut être à la fois émetteur et récepteur
 Interaction
 Émetteur envoie un message
 Le middleware s'occupe de transmettre ce message à chaque
récepteur
Année académique 2024 — 2025

Diffusion de messages
 Deux modes de réception
 Le récepteur va vérifier lui-même qu'il a reçu un message (pull)
 Boîte aux lettres
 Le récepteur est prévenu que le message est disponible et il lui
est transmis (push)
 Le facteur sonne à la porte pour remettre en main propre le
courrier
 Particularités du modèle
 Dépendance plus faible entre les participants
 Pas besoin pour l'émetteur d'être directement connecté aux
récepteurs ni même de savoir combien ils sont
 Interaction de type « 1 vers N »

Vous aimerez peut-être aussi