Systèmes distribués C. Delporte-Gallet (ESIEE-IGM) (cd@liafa.jussieu.fr) H. Fauconnier (LIAFA Université Paris 7) (hf@liafa.jussieu.fr) INTRODUCTION Enpc
Plan du cours: INTRODUCTION Enpc Introduction générale Réseaux Principes généraux, TCP-IP, mise en œuvre Algorithmique distribuée Horloges logiques, snapshots, état global, cohérence, transactions Introduction au calcul parallèle PVM, mise en œuvre Applications distribuées et services OMG Corba Tolérance aux pannes Types de défaillances, problèmes d’accord Grande échelle P2P, grilles de calcul INTRODUCTION Enpc
Introduction Diversité des systèmes distribués: Quelques exemples Systèmes embarqués: ex avionique aérospatiale Coopération faible Fortement « synchrone » Tolérance aux pannes (safety critical) Durée de vie Pas de problème de confidentailité Client(s)/serveur(s) Modèle assez général ( ≠ pair à pair) Généralement asynchrone Des réseaux locaux au réseaux de grande taille Continuité du service: réplication (assurer la cohérence!) Problème de sécurité et de confidentialité INTRODUCTION Enpc
Diversité… suite Système de réservation et base de données distribuées: répartition Assurer la concurrence : cohérence des données, transaction Tolérance aux pannes par réplication Nombreux sites Autres propriétés: sécurité (confidentialité) et équité Pair à pair: (kazaa, gnutella, emule…) Partage et répartition de données Recherche des données (ex DHT) Pas de problème de cohérence (?) Plusieurs millions de sites Confidentialité (?) INTRODUCTION Enpc
Diversité… Grille de calcul Le web comme système à image unique Calculs parallèles Efficacité, algorithmique Plusieurs centaines de milliers de sites Le web comme système à image unique Stockage réparti Puissance de calcul arbitrairement grande INTRODUCTION Enpc
Distribués… Quelques critères: Nombre de sites et répartition Dizaine pour avionique Plusieurs millions P2P Mémoire partagée ou communication par messages Partage de bus TCP sur le web Communication Fiabilité Connecté (TCP) ou non (UDP) Synchrone / asynchrone (ici synchrone = il existe une borne connue sur les délais de communication) Point à point ou diffusion Graphe de communication (routage) … INTRODUCTION Enpc
Critères… Processeurs synchrones ou asynchrones, horloges globales ou locales (ici synchrone = le temps pour effectuer un pas de calcul est connu) Exemple: calcul parallèle : à chaque top tous les processeurs font un pas de calcul, les échanges se font pas partage de la mémoire: PRAM. Problème de la gestion des conflits d’accès Tolérances aux pannes: Quel type de défaillances? Processeurs / communication La redondance Active Passive Sécurité (confidentialité) Cryptographie … INTRODUCTION Enpc
Le cours: objectifs La réalité de base: le réseau Calculs parallèles: comment implémenter des algorithmes parallèles (exemple PRAM) sur des réseaux de processeurs -> PVM Définir des standards et des classes d’applications distribuées (exemples client/serveur, modèles de la répartition) -> OMG Corba INTRODUCTION Enpc
Le cours: objectifs Algorithmes: Spécificité de l’algorithmique distribuée INTRODUCTION Enpc
Algorithmique Une algorithmique « différente » Parallélisme: répartir les calculs localement -> d’autres algorithmes Distribué: état local accessible, état global du système difficile (ou impossible) à obtenir Tolérance aux pannes: types de défaillances. Problèmes d’accords. INTRODUCTION Enpc
Deux exemples… INTRODUCTION Enpc
Terminaison distribuée Chaque employé est dans un bureau: Un téléphone Une pile de dossiers à traiter Il peut (de façon imprévisible) Traiter des dossiers et peut être amené à donner du travail aux autres Recevoir du travail à faire des autres Il sait s’il a fini (localement) son travail (mais attention même dans ce cas il peut encore recevoir du travail) INTRODUCTION Enpc
Terminaison distribuée Objectif: au lieu d’appliquer les 35 heures, les employés peuvent rentrer chez eux si tout le travail est terminé. Solution(s)? INTRODUCTION Enpc
Chaque employé Fait de façon non déterministe: *[ ¬fini -> travail □ ¬fini -> envoyer message pour donner du travail □ ¬fini -> fini = true □ reçu message -> fini = false ] Terminaison locale: fini Terminaison distribuée: pour tout processus p finip INTRODUCTION Enpc
Terminaison distribuée Tout le travail est terminé= Terminaison distribuée (≠ Terminaison locale) La solution ne doit pas modifier le déroulement normal du travail La solution doit assurer Sûreté: si l’algorithme dit que la terminaison distribuée est atteinte, c’est vrai! Vivacité: si à un instant donné la terminaison distribuée est vraie, l’algorithme le détectera (peut-être plus tard). INTRODUCTION Enpc
Remarques : La terminaison distribuée est la conjonction des terminaisons locales La terminaison distribuée est une propriété stable. Si TD est vraie à l’instant t, TD sera vraie pour tout t’>t (condition du problème) (importance du téléphone!) INTRODUCTION Enpc
Terminaison distribuée Une solution: Si quelqu’un a terminé localement, il lance un parcours de jeton v1 (consultation séquentielle de tout le monde) en demandant si on a terminé Quand v1 arrive chez moi, je garde le jeton jusqu’à ce que j’ai terminé localement Si l’initiateur du jeton reçoit v1, il lance un parcours de jeton v2, Quand v2 arrive chez moi, si j’ai terminé localement ET je n’ai rien fait depuis v1 alors je transmets le jeton au suivant Si l’initiateur reçoit v2, la terminaison distribuée est atteinte. INTRODUCTION Enpc
Principe Soit Up l’instant où v1 arrive en p et Dp l’instant où v2 arrive en p. On a: Terminaison locale de p entre Up et Dp Comme v1 visite tous les sites et v2 commence après la fin de v1, si i est l’initiateur, on a: Terminaison locale de tous les p entre Di et Dp => en Di terminaison locale de tous les p et donc terminaison distribuée en Di La terminaison distribuée est stable donc pour tout t>Di on a encore la terminaison distribuée Sûrete INTRODUCTION Enpc
Principe… La vivacité: Supposons que la terminaison distribuée soit réalisée: Soit p le dernier processus ayant atteint la terminaison locale, les jetons v1 et v2 qu’il lance lui reviendront et la terminaison distribuée est bien détectée (on peut bien sûr améliorer cet « algorithme » en gérant mieux les jetons, on peut généraliser à des « vagues » (consultation de tous et on sait quand tout le monde a été consulté))… INTRODUCTION Enpc
Deuxième exemple… Accord byzantin: Armée byzantine: Généraux traîtres et généraux honnêtes Un traître peut faire n’importe quoi (adversaire) Un général honnête respecte son code Communication synchrone par messages Un général en chef donne un ordre (attaque ou repli stratégique) INTRODUCTION Enpc
Accord byzantin Assurer que tous les généraux honnêtes prennent la même décision et que cette décision est l’ordre donné par le général en chef (si ce dernier est honnête!) Décision irrévocable telle que: Accord: si p et q sont honnêtes p et q ne peuvent décider différemment Terminaison: si p est honnête il décidera (une seule fois) Validité: si le général en chef est honnête, la seule décision possible est son ordre INTRODUCTION Enpc
Exemple: 4 généraux dont au plus un traître: Ronde 1: le général en chef envoie à tous son ordre. Ronde 2: les autres échangent les valeurs reçues en ronde 1 (chaque général (honnête) a 3 valeurs: celle qu’il s’est envoyé lui-même (= celle qu’il a reçu en ronde 1 et la valeur de chacun des deux autres) Choisir la valeur majoritaire INTRODUCTION Enpc
Suite Si le général en chef est honnête: À la fin de la ronde 1, tous les généraux ont son ordre v, Dans la ronde 2 au plus un général est un traître: Tous généraux honnêtes récupèrent au moins 2 fois v et au plus une fois une valeur différente Décision v! INTRODUCTION Enpc
Fin Si le général en chef est un traître, en ronde 2 il n’y a plus que des généraux honnêtes! À la fin de la ronde 2 ils ont tous les mêmes valeurs ce qui assure l’accord! Généralisation? INTRODUCTION Enpc
Et s’il n’y a que trois généraux dont 2 sont honnêtes? Intuition… C :1 C C 1 A B: 1 A :0 B :0 A 0 B Décision 1 Décision 0 Décision ? INTRODUCTION Enpc