Ce document contient une introduction générale au développement d'applications réparties, destiné aux étudiants de Master 1 Réseaux et Systèmes Distribués de l'Université Abdelhamid Mehri – Constantine 2. Il couvre les notions suivantes:
- Programmation des sockets
- Middlewares
- Java RMI
Cours Introduction aux Systèmes Distribués et Calcul Parallèle
Télécharger PDFIntroduction générale
1. Notions préliminaires
Logiciel : Un logiciel (Software) est défini comme un ensemble de programmes, de procédés, de règles, de documents relatifs au fonctionnement d’un ensemble de traitement de l’information.
Application : Une application est un outil qui permet de réaliser une ou plusieurs tâches ou fonctions. Elle constitue une réponse à un problème spécifique en fournissant des services aux différents utilisateurs et utilisant des services globaux fournis par le système. C’est un amalgame usuel du terme logiciel (logiciel= application).
Système : Un système est un ensemble d'éléments en interaction dynamique, dont les éléments sont organisés et coordonnés en vue d'atteindre un objectif, qui évolue dans un environnement. Un système se consacre à la gestion des ressources communes et l’infrastructure liée de manière étroite aux matériels sous-jacents. En d’autres termes, un système cache la complexité du matériel et des communications, fournit des services communs de plus haut niveau d’abstraction.
Exemple:
Système d’exploitation OS
Système de communication
Système industriel…
Un service est un comportement défini par contrat, qui peut être implémenté et fourni par un composant et peut être utilisé par un autre composant, sur base exclusive du contrat.
Mise en œuvre
Un service est accessible via une ou plusieurs interfaces
Une interface elle décrit l’interaction entre client et fournisseur du service
Point de vue opérationnel: définition des opération et structures de données nécessaires à la réalisation du service
Point de vue contractuel: définition du contrat entre client et fournisseur
L'informatique s'est initialement développée autour du concept des systèmes centralisés où un ordinateur central gère et contrôle tous les composants du système. Ces derniers ne communiquent entre eux qu'à travers la machine centrale.
Les systèmes centralisés ont ensuite évolués vers le concept du modèle Client / Serveur où les clients sont attachés au serveur par réseau au travers de logiciels dédiés.
Par la suite, l’évolution du monde des réseaux informatiques a participé fortement à l’essor rapide des systèmes distribués.
Systèmes Distribués
Classification générale des systèmes informatiques
Systèmes Informatiques
Systèmes centralisés
Systèmes distribués
L’évolution des systèmes (Histoire)
Le système centralisé (70) Calcul
Consoles de connexion
Liaison série
Le client/serveur (80)
Gestion de données simples Distribution des données
Emulation de terminaux
Réseau propriétaires
Le "fat" client (90)
Gestion interactive des données Clients graphiques
Réseaux locaux
• Le Web (95)
• Approche information
• Clients documentaires
• Réseau Internet
• Les objets distribués (00)
• Approche métiers
• Clients hétérogènes / Machine Virtuelle
• Réseau haut-débits
• Le code mobile (05)
• Approche dynamique
• Collaboration de machines
• Réseaux intelligents et interactifs
Les systèmes de calculs distribués
Les clusters :
Ensemble de nœuds identiques ayant le même OS
connectés par un réseau local high speed (ex : InniBand)?
Architecture caractérisée par une certaine homogénéité
Utilisés pour la programmation parallèle : un même programme est exécuté en parallèle sur plusieurs machines (SPMD).
Les grilles :
Système d'un ensemble de machines qui sont ou pas dédiées
Machines peuvent être éloignées (distribution physique)
Architectures hétérogènes : au niveau hardware, système, calcul, données, applications, etc.
Types de grilles :
Desktop Grid
Resource Grid
Service Grid
Systèmes orientés données
Les systèmes à base de transactions : systèmes de gestion de bases de données distribués.
Les EAI (Enterprise Application Integration) : coordination de différents systèmes
Systèmes coopératifs
Midleware : gestion coordonnées de systèmes
WEB Services : accès à des serveurs distants
Propriétés
Nœuds fixes
Nœuds fiables : peu de fautes
Connexion permanente et de haute qualité
Les systèmes mobiles et "pervasifs"
Exemples
Ordinateurs portables, téléphones, etc.
Robots, drones, etc.
Réseaux de capteurs : collecte dans un environnement, surveillance médicale, ...
Réseaux particuliers : domotique, réseaux had-hoc, ...
Propriétés
Instabilité
Nœuds peuvent apparaître/disparaître
Pas toujours de connexion réseau
Mobilité des nœuds
Systèmes peu traités dans ce cours
Cloud Computing
L'informatique en Nuage" est un terme assez vague possédant différentes significations, qu'elles soient extrêmement ciblées ou plus larges jusqu'à englober l'internet.
L'US National Institute for Standards and Technology a fourni l'une des définitions les plus claires et les plus communément admises :
" L'informatique en nuage est un modèle pratique, à la demande et universel, permettant d'établir un accès par le réseau à un réservoir partagé de ressources informatiques configurables (par exemple, réseaux, serveurs, stockage, applications et services) qui peuvent être rapidement mobilisées et mises à disposition en minimisant les efforts de gestion et les contacts avec le fournisseur de services"
2. Systèmes centralisés
Les composants du système sont localisés sur la même machine et accessibles par le programme.
Centralisation des données, des traitements et de la présentation (Interface Hommes Machines)
• Les ressources sont centralisées.
• Exp: les moyens de stockage
Terminaux légers
Données
Traitements IHM (données, fichiers), la charge CPU, les utilisateurs, les traitements ... etc.
2.1 Intérêt des systèmes centralisés
Des économies d’échelle : La centralisation offre des opportunités de concentration et de mutualisation de ressources.
Un tel partage engendre une meilleure rentabilité des investissements, accélère le financement et améliore l’organisation lorsqu’une évolution ou une installation d’un nouveau composant (logiciel ou matériel) devra être faite, ceci est réalisé tout en maintenant les composants existants.
Accessibilité et sécurité simplifiées :
La centralisation favorise l’accessibilité à l’information.
La mise en œuvre des techniques de sécurité (i.e. les droits d’accès) est simplifiée.
2.1 Intérêt des systèmes centralisés
L’unicité de l’information : La centralisation offre aussi une facilité de mise en œuvre d’un référentiel global, ce qui garantit l’unicité de l’information et simplifie les contrôles d’intégrité. Ainsi, les vérifications des différentes versions, d’unicité de clé, de la cohérence globale, d’autres propriétés peuvent être accomplies en temps réel.
Une information exhaustive et pertinente : La centralisation favorise l’acquisition et l’enrichissement des connaissances du système. Ainsi, elle facilite l’indexation des contenus ce qui accrois la pertinence des résultats de recherche.
Contrôle et traitement efficaces.
2.2 Caractéristiques des systèmes centralisés
Lorsqu’on parle des systèmes centralisés, toutes les caractéristiques se focalisent autour d’une même machine:
Centralisation de données: maintenance, une meilleure protection et maintient la cohérence et l’intégrité des données.
Centralisation des traitements : maintenance, unicité des versions déployées (un seul site à mettre à jour…), diminue le trafic du réseau de l’application elle-même.
Centralisation des utilisateurs (présentations) : meilleure façon de connaître et d’identifier les utilisateurs. Cette relation de proximité facilitera d’une part l’assistance aux utilisateurs et d’autre part leur formation.
L’existence d’un état global et cohérent.
L’existence d’une Horloge globale ce qui implique un ordre total des taches.
2.3 Limites des systèmes centralisés
Malgré les points forts qu’offre la centralisation, elle présente certaines limites, à savoir :
Si le serveur central tombe en panne le système entier n’est plus fonctionnel
La qualité du traitement est fortement liée à la qualité de l'administration et des ressources fournies à ses utilisateurs
Si l'ordinateur ou le serveur central est mal soutenu (logiciel, matériel…) , l'utilisation du système peut dysfonctionner
….
3. Systèmes distribués
Un système distribué est en opposition avec un système centralisé
La problématique de la répartition (distribution) est née avec le besoin de faire communiquer plusieurs ordinateurs via un réseau de communication ainsi que pour le partage de ressources
Un système distribué est un ensemble d'ordinateurs autonomes connectés sur un réseau et communiquant à travers ce réseau
Du point de vu utilisateur, cet ensemble apparaît comme étant une seule entité
Terminologie
Système Réparti / Distribué / Parallèle
System répartie/distribué
Employés indifféremment
Un seul mot en anglais « Distributed »
Système parallèle
Considérer comme un cas particulier des systèmes distribués où tout les composants ont des rôles semblables.
Il est composé d’un ensemble de processus situés sur la même machine, s’exécutant par rapport à la même horloge et qui ont accès à une mémoire locale commune.
3.1 Définition : Système Distribué
« Un système distribué est une collection d’ordinateurs indépendants qui apparaissent à l’utilisateur comme un seul système cohérent » Tanenbaum et Van Steen [2002]
3.1 Définition : Système Distribué suite…
C’est un ensemble d’ordinateurs indépendants qui apparait à l’utilisateur comme un système unique et cohérent
Composé de plusieurs systèmes de calcul autonomes (sinon, non réparti)
Sans mémoire physique commune (sinon c'est un système parallèle, cas dégénéré)
Communiquent par l’intermédiaire d’un réseau (quelconque)
Utilisant des message pour communiquer
Exemple : Système Distribué
Machines , personnes, processus, “agent”, ... Localisés à des endroits différents
Exemple : Système d’objets connectés
Autres Attributs des systèmes distribués par l’exemple
3.2 Les domaines d'application des systèmes distribués
Mathématique, algorithme 🡪 "puissance" de calcul
Innovations (agents, collaboration, IA, …)
Systèmes d'information d'entreprise
Les particuliers : partager ses données, jeux, accès et collaboration de services communs, …
Sites Internet : un site est un lieu de partage de l'information et de distribution de service…..
et bien d'autres à venir ….
Le monde des systèmes informatiques répartis et distribués sont en constantes évolutions : les réseaux évolues, les techniques logicielles sont en constantes révolutions, la prolifération du logiciel libre accentue cette évolution, les performances sont en constante croissance. (Système de systèmes, IoT et Cloud Computing)
3.3 Objectifs d’un Système distribué
Un système distribué vise à atteindre les objectifs généraux suivants:
Assurer un meilleur rapport coût/performance (Aspects économiques)
Permettre une adaptation de la structure d’un système à celle des applications (géographique ou fonctionnelle)
Besoins d’intégration des applications existantes
Besoins de partage: Partage de ressources (programmes, données, services).
Réalisation de systèmes à haute disponibilité
Réalisation de systèmes à grande capacité d’évolution
3.3 Objectifs d’un Système distribué
En outre, des objectifs spécifiques aux applications distribuées sont à mentionner, tels que:
Pouvoir proposer des méthodologies et des outils pour simplifier le développement d’application réseau client/ serveur, en faisant abstraction de l’aspect distant, autrement dit proposer une programmation naturelle
Décomposer les applications en un ensemble de services
Rationnaliser la répartition des services pour limiter les échanges d’informations
3.4 Les concepts des systèmes Distribués
Un système distribué se distingue d’un système centralisé :
1. PAS D'ETAT GLOBAL
2. PAS D'HORLOGE GLOBALE
3. FIABILITE RELATIVE
4. SECURITE RELATIVE
5. NON DETERMINISME
1. Pas d'état global :
un nœud ne possède pas une connaissance immédiate exacte de l'état d'un autre nœud car cette connaissance passe par l'échange d'un message qui introduit obligatoirement un délai
=> Recherche d'algorithme qui permettent de construire des clichés globaux qui représentent un état passé possible de l'application
1. Pas d'état global
Problème
P3 veut savoir si P1 ou P2 ont ouvert des fichiers? Connaissance instantanée impossible…
Un processus ne peut pas connaitre instantanément l’état courant de ses paramètres….
1. Pas d'état global
délai
Pas d'état global : délai
délai
2. Pas d'horloge global :
horloge propre à chaque nœud (ordinateur) pas de synchronisation des horloges
=> L'ordre des évènements répartis dans l'application n'est pas déductible à partir des datations locales
=> Définition des datations logiques…
2. Pas d'horloge global
Chaque nœud possède sa propre horloge pour dater les événements qui lui sont locaux
Par conséquent, si les horloges indépendantes de chaque nœud ne sont pas parfaitement synchronisées, l’ordre des événements répartis dans l’application n’est pas déductible à partir des datations locales.
Solution :
Des mécanismes de datation logique
2. Pas d'horloge global
Ils existent 2 horloges date(e1) < date (e2) 🡪 e1 avant e2 Si les horloges parfaitement synchronisées
Pas de référentiel temporel unique
3. Fiabilité relative :
Tolérance à la panne d'un nœud par des moyens de réplication et de délocalisation
Maîtriser et rendre robuste de telles architectures demandent de gros efforts informatiques qui ne sont pas souvent faciles
Le risque de défaillance d'un nœud augmente avec leur nombre
4. Sécurité relative :
Difficulté de protéger une architecture répartie contre les intrusions
Les points d'accès aux ressources sont souvent « hors des murs » demande donc une authentification
Les nœuds peuvent être dynamiques (re localisation)
🡪 architecture réseau variable donc difficile à protéger
Apparition massif des machines portables accroît cette fragilité
5. Non déterminisme :
Une application réparti est une application asynchrone (sens indépendance) : les nœuds s'exécutent en parallèle et chaque nœud peut lui même comporter plusieurs activités parallèles (processus, threads)
Il existe ainsi un non déterminisme, une non reproductibilité et une explosion combinatoire des états (difficultés classiques de la programmation parallèle asynchrone: jetons, "synchronized", …)
FAQ
Qu'est-ce qu'un système distribué ?
Un système distribué est un ensemble d'ordinateurs autonomes connectés sur un réseau et communiquant à travers ce réseau. Du point de vue utilisateur, cet ensemble apparaît comme étant une seule entité.
Quels sont les avantages des systèmes centralisés ?
Les systèmes centralisés offrent des économies d’échelle, une meilleure rentabilité des investissements, une accessibilité et sécurité simplifiées, l’unicité de l’information, une information exhaustive et pertinente, ainsi qu’un contrôle et traitement efficaces.
Quelles sont les limites des systèmes centralisés ?
Les systèmes centralisés présentent certaines limites, notamment la panne du serveur central qui rend le système entier non fonctionnel, la qualité du traitement liée à l'administration et aux ressources fournies, et la possibilité de dysfonctionnement si l'ordinateur ou le serveur central est mal soutenu.