1 / 65

Systèmes Distribués

Systèmes Distribués. Fabrice Huet fhuet@sophia.inria.fr. Thèmes, Évaluation. Thèmes: Introduction aux systèmes distribués Matériel, Logiciel Communications Synchronisation Outils pour la programmation Sockets RPC Java-RMI Introduction aux systèmes Pair-à-Pair Évaluation

kyna
Download Presentation

Systèmes Distribués

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Systèmes Distribués Fabrice Huet fhuet@sophia.inria.fr

  2. Thèmes, Évaluation Thèmes: • Introduction aux systèmes distribués • Matériel, Logiciel • Communications • Synchronisation • Outils pour la programmation • Sockets • RPC • Java-RMI • Introduction aux systèmes Pair-à-Pair Évaluation • Un mini projet à rendre en binomes • Examen

  3. 1- Introduction aux Systèmes Distribués • “… no man is an island, entire of itself; every man is a piece of the continent, a part of the main.” • John Donne (1572-1631). • “The network is the computer” • Sun Microsystems, 1985.

  4. Petites définitions • Pleins de définitions possibles pour un SD: • Un système distribué est une collection d’ordinateurs indépendants qui apparaissent à l’utilisateur comme un unique système cohérent • Un système distribué est un ensemble de programmes, s’exécutant sur des ordinateurs différents, reliés par un réseau, et s’échangeant des informations pour exécuter une tache. • Élément d’un SD • Un élément physique d’un SD (par exemple un processeur) est appelé hôte ou noeud

  5. Identifier un système distribué • Comment déterminer si un système est un SD ? est-ce que c’est….. • La distance géographique entre les nœuds ? • Le nombre de nœuds disponibles ? • Le système d’exploitation, les protocoles, l’api utilisés ?

  6. La taille ? Non • Il y en a de toutes les tailles • Les sondes contrôlées depuis la terre • Millions de kms • Seulement quelques noeuds (Mars Pathfinder, 1997) • Internet • Milliers de kms, • Millions de noeuds

  7. La taille ? Non • Tailles intermédiaires • Ordinateurs reliés à une imprimante • ~ 10 mètres • ~ 10 nœuds • Caisse enregistreuse dans un supermarché • ~ 100 mètres • ~ 100 nœuds

  8. La taille ? Non • Très petits • Home Cinéma • ~ 1 mètre • 3-5 noeuds (TV, Stéreo, DVD,…) • Voitures (GPS, ABS, alarme, ...) • Quelques mètres • Plein de noeuds • 40% du coût d’une voiture moderne est lié à l’électronique • Personal Area Networks • ~ 1 mètre • 3-5 noeuds (montre, portable, PDA, lunettes…)

  9. SD vs. Systèmes centralisés • Quelle sont les différences entre un SD et un système centralisé (ou mono-processeur) • Un système centralisé est un système qui fonctionne toujours si la connexion réseau est coupée • Exemples: • Compilateur • Traitements de texte • Certains jeux • Systèmes d’exploitation pour ordinateurs familiaux (mais de moins en moins vrai)

  10. SD vs. Systèmes centralisés • Différences principales • Plus un unique espace d’adressage • Un programme sur un nœud ne peut pas accéder directement aux données d’un autre programme sur un autre nœud. • Les programmes s’exécutent indépendamment • Vraie parallélisme (et concurrence) entre les programmes • Pas d’horloge globale, chaque exécution est différente • Les communications se font en envoyant des informations sur le réseau • La latence à un impact important • Les pannes sont courantes

  11. SD vs. Systèmes centralisés • Objectifs: • Transparence • Masquer la distribution • Dégradation progressive • Un système devrait continuer à fonctionner aussi correctement que possible si une de ses parties tombe en panne. • Les systèmes centralisés tombent en panne complètement. • Passage à l’échelle • Un SD devrait être capable de gérer un grand nombre de noeuds. • Hétérogénéité • Les nœuds peuvent être d’architecture différente, avoir des OS différents…

  12. Transparence • Le concept de transparence peut-être appliqué à plusieurs aspects • Localisation : où se trouve la ressource • Migration : déplacement de la ressource • Réplication : plusieurs ressources • Concurrence : plusieurs utilisateurs • Panne : panne ou réparation • Persistance : sauvegarde de la ressource

  13. Passage à l’échelle • La centralisation limite le passage à l’échelle • Service centralisé : un unique serveur • Données centralisées : unique point d’accès pour les données • Algorithmes centralisés : nécessite une connaissance globale du système • La latence est aussi un facteur limitant • Mais il existe de nombreuses techniques pour contourner ces problèmes • Serveurs multiples (ex: CDN - DNS) • Bases de données réparties (ex: DNS) • Algorithmes utilisant des informations partielles (ex: P2P)

  14. Exemple: Nom de domaine • Il est plus facile de se rappeler d’un mot/phrase que d’une série de chiffres… • Les noms de domaine sont des suites alphanumériques de caractères séparées par des points • Chaque segment a une taille/valeur arbitraire (mais limitée) • Le segment le plus significatif (le plus à droite) est normalisé • com, edu, gov, info, org, net, biz… • La transformation du nom de domaine en adresse IP se fait en contactant un serveur de domaine (DNS) • Les serveurs DNS sont organisés hiérarchiquement • Au sommet se trouvent les serveurs racine • Chaque organisation peut mettre en place son serveur

  15. Nom de domaine - 2 Serveurs DNS Serveur Web IP? XXX.XXX.XXX.XXX http get Client http://www.google.com • Pour communiquer, un client doit connaître l’IP d’un serveur et un numéro de port • Cette adresse s’obtient auprès d’un serveur DNS (lookup)

  16. Serveurs DNS . • Une requête DNS est envoyée au serveur du domaine dont dépend la machine • Si le serveur n’a pas autorité il demande à son parent… • Les réponses parcourent le chemin inverse et sont mises en cache com org gov biz fr amazon unice free inria

  17. Exemple: CDN • Content Delivery Network • Un (très) gros serveur peut supporter plusieurs centaines de milliers de connexions par secondes • MAIS: • Rien pour la latence • Le réseau peut être un goulot d’étranglement (cf. 9/11) • Solutions: • Avoir le même contenu sur plusieurs serveurs • Diriger un client vers un serveur « proche » • Approcher physiquement le contenu du client • Problèmes: • Diriger le client • Assurer la synchronisations des miroirs

  18. Routage de contenu • Donner au client le contenu disponible à l’endroit le plus approprié • Plusieurs métriques • Proximité au sens réseau • Proximité géographique • Temps de réponse • Type d’utilisateur (payant…) • Routage global par redirection DNS • Sous un même nom sont regroupés plusieurs serveurs • Le serveur DNS retourne au client la « bonne » IP • Mais • Risque de latence élevée pour le lookup • La requête DNS ne contient pas d’information sur le contenu demandé • Routage par port TCP • La requête est redirigée par un serveur vers d’autres serveurs suivant le numéro de port • Routage de niveau 7 • Analyse du contenu de la requête • Une requête peut générer plusieurs sous requêtes transparentes • Web Cache Communication Protocol • Un routeur intercepte les demandes des clients et les envoient à des caches • Les caches indiquent aux routeurs (avec WCPP) quels protocoles ils servent

  19. Conclusion • Les systèmes distribués viennent dans toutes les tailles • Caractéristiques: • Multiples espaces d’adressage • Parallélisme, concurrence et absence d’horloge globale. • Latences et pannes

  20. 2- Matériel pour les systèmes distribués

  21. Introduction • En pratique tous les systèmes distribués sont composés de plusieurs processeurs • Mais l’organisation varie • Mémoire • Interconnexion • Homogénéité/Hétérogénéité • Influence • La façon de programmer • La façon de les utiliser • Les performances

  22. Organisation • Mémoire privée (multicalculateurs) • Chaque processeur à sa propre mémoire • Mémoire partagée (multiprocesseurs) • L’ensemble des processeurs partagent la mémoire • Interconnexion à bus • Tous les processeurs utilisent un seul médium pour communiquer • Interconnexion par commutation • Les processeurs communiquent par un ensemble de câbles • Les messages se déplacent sur ces câbles et des décisions de routage sont prises à chaque nœud d’interconnexion • Homogénéité • La même technologie est utilisée partout • Hétérogénéité • Des ordinateurs différents sont connectés par des réseaux différents • Ex: Internet (ATM, IP, Fibre, Ethernet…)

  23. UC UC UC Mémoire Cache Cache Cache Multiprocesseurs à bus • Tous les processeurs ont accès à la même mémoire à travers un bus • Exemples: • Bi-Processeurs • Processeurs multi-cores • Cohérence • Si le CPU A écrit un mot en mémoire et que le CPU b y accède ensuite, il aura la bonne valeur • Implémentation naïve peu performante • 4 ou 5 CPUs saturent le bus • Solution: ajouter du cache au niveau de chaque processeur • Tous les accès mémoire passent pas le cache • Si hit rate élevé, moins de messages sur le bus • Mais problème de la cohérence des caches

  24. Mémoires M M M M C C UC C C Multiprocesseurs à commutation • Les systèmes à bus ne passent pas à l’échelle • Pour des systèmes de plus de 256 processeurs, on utilise d’autres techniques • Réseau d’interconnexion • La mémoire est divisée en modules • Les processeurs y sont reliés par une matrice de commutation (crossbar switch) • A chaque intersection, le nœud de commutation (crosspoint switch) peut-être ouvert ou fermé • L’accès à un module mémoire est synchronisé • Les demandes sont mises dans une file d’attente • Inconvénient • Nécessite beaucoup de nœuds d’interconnexion (n*m)

  25. C M C M C M C M Multiprocesseurs à commutation • Alternatives à la matrice • Réseau oméga • NUMA • Réseau oméga • Des commutateurs à 2 entrées et 2 sorties • Nécessite de passer par plusieurs pour atteindre la mémoire • A besoin d’être extrêmement rapide, donc coûteux • NUMA • NonUniform Memory Access • Accès hiérarchique à la mémoire • Les processeurs ont une mémoire locale accessibles rapidement • L’accès à la mémoire d’un autre processeur est plus lent • En général plus rapide que l’oméga • Mais plus difficile à programmer • Bien placer les données est non trivial

  26. Multicalculateurs • Beaucoup plus facile à construire qu’un système multiprocesseurs • Mémoire privée donc communications CPU à CPU (volume plus faible que CPU vers mémoire) • Multicalculateurs homogènes à bus • Les nœuds sont dans des racks • Et reliés par un réseau rapide (Fast Ethernet) • Passage à l’échelle problématique (100 nœuds max)

  27. Multicalculateurs • Multicalculateurs homogènes commutés • Les messages sont routés à travers un réseau d’interconnexion • Plusieurs topologies possibles • Grille à 2 dimensions • Câblage simple • Le chemin le plus long est en

  28. Multicalculateurs • Tore • Extension de la grille • Les processeurs frontières sont reliés à leurs homologues • Nécessite un câblage plus long

  29. Multicalculateurs • Hypercube • Cube à n dimensions • 4 dimensions: 2 cubes à 3 dimensions reliés par les sommets homologues • Complexité du câblage en log(n) • Chemin le plus long en log(n)

  30. IBM BlueGene/L • 1er au classement mondial • 131072 processeurs et 32768 Go de mémoire • Interconnexion par tore 3D (chaque processeur a 6 voisins)

  31. Cray XT3 • 2000 à 30 000 processeurs Opterons • Reliés par un tore 3D • Actuellement 6eme au classement mondial avec 10880 processeurs

  32. Multicalculateurs • Les multicalculateurs commutés sont très variés • Modèles à plusieurs milliers de CPUs coûtant plusieurs millions d’euros • Clusters: PCs reliés par du matériel « grand public » • Ce qui les différencie souvent est le matériel pour l’interconnexion • Faible latence et haut débit sont coûteux

  33. Grid’5000 32x2 PowerPC 216x2 Opterons 64x2 Xeons 64x2 Opterons 56x2 Opterons 103x2 Itaniums 56x2 Opterons 32x2 Xeons 32x2 Opterons 105x2 Opterons

  34. 3- Logiciels pour les systèmes distribués

  35. Systèmes d’exploitations • Le matériel est important, mais c’est le logiciel qui détermine le système distribué • Ressemblent beaucoup à des systèmes d’exploitation classiques • Gèrent l’accès au matériel • Permet le partage de ressources (mémoire, CPU…) • Masquent l’hétérogénéité • Système fortement couplé • L’OS fournit une unique vue des ressources • Souvent appelé Distributed Operation System • Systèmes multiprocesseurs • Systèmes multicalculateurs • Système faiblement couplé • Chaque ordinateur a son propre OS • Appelé Network Operating System

  36. Systèmes multiprocesseurs • Dans le cas de plusieurs processeurs accédant à la même mémoire, les accès doivent être protégés • Très similaire à un OS monoprocesseur • Difficile de porter un OS mono en multi • Nécessite souvent des changements profonds • Les OS modernes sont pensés multiprocesseurs dés le début • Rend le nombre de processeurs transparents pour l’application • Protection de la mémoire grâce à des primitives de synchronisation • Sémaphores et moniteurs

  37. Applications distribuées Services distribués noyau noyau noyau Systèmes multicalculateurs • Très différent d’un OS monoprocesseur • Les données nécessaires au fonctionnement global du système ne sont plus dans une zone de mémoire partagée • Chaque nœud a • son propre noyau (kernel) responsable de la gestion des ressources locales (mémoire, CPU, disque…) • Un module pour gérer les communications inter processeurs • Une couche commune au dessus des noyaux implémente un OS supportant l’exécution parallèle et concurrente de taches • Services parfois fournis: • Mémoire partagée! • Affectation des taches à certains processeurs • Gestion des pannes

  38. Communications par messages • Si pas de mémoire partagée, communication par messages • Différences • Buffers ou non • Blocage ou non • Bufferisation possible à 2 endroits • Du côté de l’appelant • Du côté de l’appelé • Bloquage • Dépend de la bufferisation

  39. S4 S1 Appelant Receveur S2 S3 Communications par messages • Blocage de l’appelant • S1 : mise en buffer, seulement si plein • S2 : envoie du message • S3 : réception du message • S4 : transmission du message a l’appelé • Si blocage en S2 , S3 ouS4 alors buffer appelant inutile • Blocage de l’appelé • Possible seulement en S3 : buffer vide ou pas de buffer • L’appelé peut décider de vérifier périodiquement si des messages sont disponibles (polling) mais • Fréquence trop rapide signifie gâchis de CPU • Fréquence trop lente, risque de pertes de messages (buffer plein)

  40. Fiabilité des communications • L’émetteur a-t-il une garantie que son message a bien été reçu ? • Si fiabilité les messages sont garantis d’arriver en S3 • Si blocage en S1 ou S2 fiabilité non obligatoire • Si blocage en S3 ou S4, fiabilité obligatoire!

  41. Systèmes distribués à mémoire partagée • Les multiprocesseurs sont plus simples à programmer que les multicalculateurs • Accéder à des variables partagées est plus simple que communiquer par messages • Il est possible d’émuler une mémoire partagée sur les multicalculateurs • Page-Based Distributed Shared Memory • Unique espace d’adressage virtuel • Les pages physiques sont reparties sur les différentes machines • Quand un processeur demande une page non locale, le système d’exploitation la copie localement

  42. Systèmes distribués à mémoire partagée • Pour améliorer les performances, on peut répliquer les pages en lecture seule • Permet à plusieurs processeurs d’avoir localement la même page • Limite les chargements • Réplication de toutes les pages • Possibles lorsqu’elles ne sont que lues • Si modifications, alors il faut prendre des mesures (avant ou après ?) • Inconsistance • Il est possible d’abandonner la stricte consistence • Mais rend la programmation beaucoup plus compliqué • Taille des pages • Quelle est la bonne taille? • D’où vient le coût d’un transfert?

  43. Network Operating Systems • Ne suppose pas que le système est homogène et qu’une vue globale doit être fournie • Les machines et leurs OS peuvent être différents, mais elles sont toutes reliées par un réseau • Un NOS fournit des mécanismes pour utiliser les services disponibles sur certaines machines • Exemples: • rlogin, ssh… Applications distribuées Services réseau Services réseau Services réseau noyau noyau noyau

  44. Middleware • Un DOS ne gère pas des machines indépendantes • Un NOS ne donne pas une vue cohérente de machines • Comment avoir le meilleur des 2 ? • On ajoute une couche au dessus d’un NOS pour masquer l’hétérogénéité, le middleware Applications distribuées Middleware Services réseau Services réseau Services réseau noyau noyau noyau

  45. 4- Outils pour la programmation

  46. A B Application Socket write read read write Outil de base: Sockets • Introduit dans Berkeley Unix 4.2 (BSD) en 1981 • Représentation point à point d’un flux de données • Un programme peut • Écrire des données • Lire des données

  47. Primitives • Les sockets fournissent un ensemble d’opérations de base (les primitives) • Socket: création d’une socket • Bind: Attachement de la socket à une adresse locale • Listen: Annonce l’acceptation des connexions • Accept: Bloque jusqu’à l’arrivée d’une demande de connexion • Connect: Demande de connexion • Send: Envoie de données • Receive: Lecture de données • Close: Fermeture

  48. Sockets en Java • Jusqu’à JDK 1.4 : I/Os bloquantes • Deux classes :java.net.Socketet java.net.ServerSocket • Beaucoup de classes pour la gestion des streams • Toutes les opérations (lecture ou écriture) sont bloquantes • 1 ou 2 threads nécessaires pour chaque socket • Surcoût mémoire et changement de contexte • available() permet de savoir si des données sont disponibles mais utilisation du CPU

  49. Nouvelle API pour les Sockest • Nouveauté dans JDK 1.4: I/Os non bloquantes • 2 nouvelles abstractions de haut niveau • Buffers: conteneur à données linéaire • Channels: Tube de communication bidirectionnel supportant des opérations bloquantes et non bloquantes • Une classe Selector pour multiplexer les événements : base du passage à l’échelle • ServerSocketChannel et SocketChannel • Support d’opérations bas-niveau de gather/scatter • Fichier mappés en mémoire, gestion des buffers… • Package java.nio.*

  50. Limitations des sockets • Description des données (ce qui sera lu et écrit) • Chaque application doit le définir • L’implémentation doit être identique sur chaque nœud • Problèmes: ordre des bits, symboles spéciaux… • Protocole de communication (comment lire et écrire) • Chaque application doit le définir • L’implémentation doit être consistante sur tous les noeuds • Problèmes: taille de buffer, synchronisation, timeouts, ... • Conséquences • Beaucoup de temps est passé à récrire le même code • Des erreurs sont faciles à faire, mais difficiles à trouver

More Related