La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

1 Communications dans les systèmes distribués. 2 On distingue plusieurs niveaux d’abstractions 1. Bas Niveaux : Sockets 2. Niveau intermédiaire : transparence.

Présentations similaires


Présentation au sujet: "1 Communications dans les systèmes distribués. 2 On distingue plusieurs niveaux d’abstractions 1. Bas Niveaux : Sockets 2. Niveau intermédiaire : transparence."— Transcription de la présentation:

1 1 Communications dans les systèmes distribués

2 2 On distingue plusieurs niveaux d’abstractions 1. Bas Niveaux : Sockets 2. Niveau intermédiaire : transparence réseau pour les appels de fonctions (Remote Procedure Call) 3.Haut Niveau : transparence réseau pour les objets (Object Request Broker ORB), objets mobiles

3 3 Communication par sockets : Les sockets sont des points de connexion pour une communication. Il y a au moins deux entités qui communiquent : il faut donc au moins deux points de connexion. ( ex: téléphone, courrier ) Exemple : courrier L'analogie de la socket est ici une boîte aux lettres. Le message est une lettre qui porte une adresse. L'expéditeur dépose la lettre dans la boîte aux lettres du service postal. L'adresse permet aux services postaux de déposer le message dans la boîte aux lettres du destinataire.

4 4 Caractéristiques : Connexion stable bi-directionnelle entre deux programmes Fonctionnement : comme des fichiers (File discriptor en C, Stream en Java) Il faut connaître l’adresse IP et le numéro de port du serveur (Pas de transparence réseau) Gestion par le programmeur de la communication Protocoles utilisés : TCP et UDP

5 5 Les domaines d'une socket On distingue différents domaines pour une socket selon le type d’utilisation : local, internet,... AF_UNIX : sockets locales au système (à la machine), AF_INET : domaine Internet, AF_NS : protocoles XEROX NS, 2.1 Types d’une socket Le type SOCK_DGRAM : Mode non connecté, envoi de data-grammes de taille bornée, préservation des limites de messages. Dans le domaine Internet, le protocole sous-jacent est UDP. Le type SOCK_STREAM : Communications fiables en mode connecté. Une demande de connexion préalable est établie avant l’envoi de message. Dans le domaine Internet, le protocole sous-jacent est TCP Le type SOCK_RAW : Permet l'accès aux protocoles de plus bas niveau : par exemple, le protocole IP dans le domaine Internet.

6 6 Client Serveur Socket() Connect() Write() Read() Listen() Accept() Write() Read() Bind() Socket en mode TCP

7 7 Client Serveur Socket() Bind() Sendto() Recvfrom() Socket en mode UDP

8 8 Modèle client/serveur

9 9 Vision du client Client Vision du serveur Une machine exécute un ou plusieurs processus client ou serveur. Exemples –serveur de fichiers, serveur de calcul, serveur de noms, serveur d’impression Service distant requête réponse traitement requêtes réponses

10 10 Modèle client serveur Noyau Site 1Site 2Site 3 Réseau (exemple : Ethernet) Requête Réponse ClientServeur 1 2 3 4 5 6 7 Requête/réponse Liaison Physique

11 11 Définitions Application client/serveur une application fait appel à des services distants sur des serveurs à l’aide de requêtes ou message Serveur Programme offrant un service sur un réseau. Il répond aux sollicitations des clients. Client Programme qui émet des requêtes ou des commandes de services. Il est initiateur du dialogue. Alternative aux échanges de requêtes : partage de données ( mémoire ou fichier )

12 12 Réalisation du client Construction d’un message de requête –Type du message Exemple (serveur de fichiers) : Créer, lire, écrire, supprimer –Données Exemple (serveur de fichiers) : pour une lecture, nom du fichier, nombre d’octets à lire, position dans le fichier Source (client) et Destination (serveur) Envoi du message de requête au serveur Exemple (serveur de fichiers) : le message est envoyé au serveur de fichier Réception d’une réponse du serveur Exemple (serveur de fichiers) : le client est suspendu jusqu’à réception du message qui contient les octets lus

13 13 Réalisation du serveur Processus cyclique –réception d’un message de requête –traitement selon le type de requête Exemple (serveur de fichiers) : lecture sur disque pour traiter une requête de lecture –envoi du message de réponse au client Processus veilleur Le serveur peux exécuter de façon concurente de plusieurs requêtes -plusieur processus : une mémoire virtuelle associée à chaque processus -plusieurs processus légers ( threads )

14 14 Communication par message Emission d’un message –envoyer (message, dest) dest : identité du processus destinataire Réception d’un message –recevoir (addr, message) addr : adresse d’écoute du récepteur

15 15 Choix de conception Adressage Primitives bloquantes ou non bloquantes Gestion de tampons de message Communication fiable ou non fiable

16 16 Adressage Adresse fondée sur un numéro de machine –Adresse = numéro de machine Comment distinguer plusieurs processus s’exécutant sur une même machine –Adresse = numéro de machine + numéro local de processus –Adresse = numéro de machine + adresse locale Processus indique au noyau qu’il utilise une adresse locale donnée Pas de transparence à la localisation

17 17 Adressage Attribution d’une adresse unique de processus ne contenant pas de numéro de machine par un serveur centralisé –Serveur centralisé gère un compteur incrémenté de 1 chaque fois qu’une adresse est attribuée –Solution non adaptée aux grands systèmes Chaque processus s’attribue une adresse unique –Choix dans un grand espace d’adressage pour avoir une faible probabilité de choix d’une même adresse par deux processus distincts

18 18 Adressage –Problème : à quelle machine envoyer un message Diffusion de l’adresse à toutes les machines Celle sur laquelle s’exécute le processus désigné répond Possibilité de gérer un cache de translation des adresses de processus en numéros de machine Utilisation de noms symboliques pour désigner les processus –Serveur de désignation établit la correspondance entre un nom symbolique et une adresse de processus –Traduction du nom à l’exécution et gestion de caches de noms

19 19 Primitives bloquantes ou non bloquantes Primitive d’envoi de message –Bloquante pendant toute la durée de transmission du message Pas de recouvrement calcul/communication –Non bloquante Utilisateur ne peut pas modifier son tampon tant que celui-ci n’a pas été transmis –Comment savoir que la transmission est terminée ? >>Recopie du tampon utilisateur dans un tampon du noyau et laisser le processus continuer? –Coût de la copie qui s’ajoute à celle effectuée pour le transfert du message dans le tampon d ’émission de la carte d’interface réseau >>Interrompre l’expéditeur pour le prévenir que le message est parti et qu’il peut utiliser le tampon –Définition du terme bloquant Jusqu’à transmission ou bien jusqu’à acquittement ?

20 20 Primitives bloquantes ou non bloquantes Primitive de réception –En général, bloquant –Non bloquant Primitive d’attente ou de test d’arrivée d’un message Limitation de la durée de blocage –En cas de défaillance, attente infinie –Time-out (délai de garde)

21 21 Gestion de tampons de message Que se passe-t-il si un message arrive sur une machine avant qu’un processus n’ait demandé sa réception ? –Envoi avant réception –Plusieurs processus envoient un message au même serveur qui peut être occupé à traiter un autre message Boîte aux lettres –Un processus indique au noyau l’adresse à laquelle il est susceptible de recevoir un message –Le noyau alloue une boîte aux lettres au processus (tampons pour recevoir des messages) au processus dans laquelle sont déposés les messages adressés au processus –Primitive de réception bloquante si la boîte aux lettres est vide –Réception d’un message = extraction du message de la boîte aux lettres

22 22 Gestion de tampons de message –Une boîte aux lettres n’est pas de taille infinie Que faire lorsque la boîte aux lettres est pleine ? L’émetteur d’un message s’assure qu’un tampon est disponible pour la réception du message avant de l’émettre –Envoi d’un message préalable de réservation d’un tampon

23 23 Communication fiable ou non fiable Réseau non fiable –Un paquet peut être perdu –Délai d’acheminement des paquets variable –Déséquencement possible des paquets Message utilisateur peut être fractionné en plusieurs paquets Primitive non fiable –Programme utilisateur doit gérer la perte Primitive fiable –Gestion d’acquittements explicites par le noyau pour les messages de requête et de réponse Message de réponse peut servir d’acquittement au message de requête –Retransmission en cas de perte Numérotation des messages en séquence pour éviter qu’un message ne soit traité deux fois –Acquittement de message ou de paquet

24 24 Appel de procédure à distance Appel de procédure local P c P Site clientSite serveur c s (appel, P, paramètres) (réponse, P, résultats) Appel de procédure à distance

25 25 Différence entre appel local et appel de procédure à distance transmission des paramètres à l’appel et des résultats au retour mécanismes de conversion pour le passage des paramètres et résultats car client et serveur peuvent être écrits dans des langages différents et s’exécuter sur des processeurs différents spécification du comportement en cas de défaillance

26 26 Mécanismes de base Transparence de l’appel à distance pour le client et le serveur –talon client sur le site appelant, fournit au processus client une interface identique à celle de la procédure appelée –talon serveur sur le site appelé, fournit au processus serveur une interface identique à celle d’un appel local –chaque talon doit être lié au programme d’un processus sur le site correspondant et fonctionne comme un représentant de l’autre processus sur le site distant

27 27 Réalisation d’un appel de procédure à distance Fonctions du talon client –emballage : mise en forme des paramètres pour le transport sur le réseau –envoyer vers le site appelé un message contenant l’identité de la procédure appelée et les paramètres –provoquer le blocage du processus client en attente de la réponse –réveil du client lors de l’arrivée du message de réponse –extraction des résultats et convertir si besoin –exécuter le retour de procédure avec transmission des résultats

28 28 Réalisation d’un appel de procédure à distance Fonction du talon serveur –à partir du message reçu, déterminer la procédure appelée et déballer les paramètres –exécuter la procédure appelée en lui passant les paramètres –préparer le message de retour en emballant les résultats –envoyer le message de retour au site appelant –terminer l’exécution

29 29 Réalisation d’un appel de procédure à distance appel retour emballage déballage Gestion processus emballage Exécution procédure Programme appelantTalon clientTalon serveurProgramme appelé message Envoi paramètres Réception paramètres Envoi résultats message Réception résultats Site appelant (client)Site appelé (serveur) Système de communication

30 30 Emballage/déballage Définition d’un format standard pour la représentation des données –spécifie la représentation des données élémentaires et des constructions Transmission des paramètres et résultats par valeur car espaces d ’adressages de l’appelé et de l’appelant sont différents Pas de pointeur car interprétation à distance impossible Transmission de structures complexes si procédures d’emballage et déballage fournies

31 31 Représentation XDR Problème de non unicité de représentation interne des objets. 1.taille 2.ordre des octets 3.représentation Utilisation de XDR transparente avec les RPCs Mise bout à bout des différentes valeurs suivant un certain format Sérialisation -Désérialisation Ensemble de fonctions de sérialisarion (desérialisation) pour les types de base + méthode de description standard de structures de données permettant la sérialisation (desérialisation). Big-Endian (HP/Sun) Adresse -> <- Poids des octets Little_Endian (Vax/Intel) Adresse -> Poids des octets ->

32 32 Représentation utilisée par XDR Big-Endian pour les entiers Alignement multiple de 4 Repésentation IEEE pour les flottants La librairie XDR Contrairement au sockets, les fonctions XDR ne sont pas des appels système mais des fonctions de librairie externe au système. Les fichiers d'include #include

33 33 Fonctions de manipulation de flot XDR Les données converties du format machine dans leur représentation XDR sont placées dans un flot XDR. Inversement, les données sont lues dans un flot XDR et transformées de leur représentation XDR vers la représentation machine. Constantes et types prédéfinis bool_t -> FALSE, TRUE : booléen xdr_op -> XDR_ENCODE, XDR_DECODE, XDR_FREE : type du flot XDR : structure opaque de description de flot ( FILE)

34 34 Les filtres XDR Un filtre a trois fonctionnalités. Il permet l'encodage, le décodage mais également la libération de la mémoire qui a pu être allouée par le filtre. Tous les filtres renvoie TRUE en cas de réussite et FALSE en cas d'échec! Type Filtre Type XDR char xdr_char() int short xdr_short() int … … … float xdr_float() float double xdr_double() double void xdr_void() void enum xdr_enum() int

35 35 Les deux arguments d'un filtre sont de même type en encodage et en décodage. boolt xdr_type (XDR*pt_xdr,type*pt); Paramètres : 1. pt_xdr : pointeur sur le flot XDR en encodage ou décodage 2. pt : pointeur sur zone contenant valeur à encoder ou zone réservée pour recevoir la valeur décodée Retour : 1.TRUE : en cas de succès FALSE : en cas d'échec

36 36 Encodage des booléens bool_t xdr_bool(XDR*pt_xdr, bool_t * pt); C Encodage de chaînes de caractères bool_t xdr_string (XDR*pt_xdr,char**pt,u_int taille_max); Paramètres : 1. pt_xdr : pointeur de flot XDR 2. pt : pointe sur le pointeur de la chaîne de caractères à encoder ou sur une zone mémoire contenant l'adresse de la zone réservé pour stocker la chaîne à décoder 3. taille_max : taille maximale de la chaîne Il y a allocation de mémoire dynamique de mémoire pour stocker la chaîne si *pt est NULL en décodage, sinon erreur en encodage. -> xdr_wrapstring(XDR*pt_xdr,char**pt) appelle xdr_string avec taille_max=UINT_MAX

37 37 Traitement des défaillances 3 entités sujettes à défaillance –site client, site serveur et système de communication Nécessité de définir le comportement de l’appel de procédure à distance dans les différentes hypothèses de défaillance –sémantique de l’appel de procédure à distance Réaliser les mécanismes nécessaires au traitement des défaillances

38 38 Exemples de défaillances Impossible de contacter le serveur Perte d’un message client -> serveur –appel ou acquittement Perte d’un message serveur -> client –retour, acquittement Défaillance du serveur au cours de l’appel –À quel moment exactement ? Défaillance du client entre l’appel et le retour

39 39 Sémantiques de l’appel de procédure à distance (défaillance du serveur) Exécution incertaine (may be semantics [SPECTOR 82] –un seul message d’appel –en présence de pannes procédure exécutée 0, 1 fois ou partiellement Exécution au moins une fois (at least once semantics [BACON 87] –en présence de panne au moins une fois si le client reçoit message de RETOUR

40 40 Sémantiques du RPC Exécution au moins une fois (suite) –Protocole : délai de garde sur site client retransmission du message d ’APPEL abandon de l’appel par le site client à l’issue d’un nombre prédéfini de retransmissions sans message de RETOUR –Convient aux procédures idempotentes

41 41 Sémantiques du RPC Exécution au moins une fois et retour du résultat de la dernière exécution (last of many semantics) [LAMPSON 81] Protocole –retransmission du message APPEL –numérotation en séquence des messages APPEL correspondants à un même RPC –conservation du dernier message APPEL envoyé

42 42 Sémantiques du RPC –Serveur conserve le numéro de séquence du dernier message APPEL reçu et chaque message APPEL donnant lieu à une exécution –Serveur n’exécute un APPEL que si son numéro de séquence est supérieur à ceux reçus antérieurement –Client élimine tous les messages RETOUR ne correspondant pas au dernier message APPEL

43 43 Sémantiques du RPC Critique –fonctionne en l’absence de pannes de sites –fonctionne en présence de pannes des sites client ou serveur en cas d’appels non imbriqués –mis en défaut en cas d’appels de procédure imbriqués si un des sites de la chaîne d’appel est défaillant

44 44 Sémantiques du RPC Exécution au plus une fois (at most once semantics) [LISKOV 87, Argus] –motivée par la construction d’applications distribuées très fiables (système bancaire) fondée sur des actions atomiques (tout ou rien) –redondance –mise en œuvre coûteuse –procédure exécutée 0 ou 1 fois en cas de défaillance

45 45 Le problème des orphelins (défaillance du client) Cause des orphelins –retransmission du message APPEL peut provoquer plusieurs exécutions de la procédure appelée, toutes sauf une sont des orphelins –exception ou défaillance du client quand le client cesse d’attendre le message RETOUR, l ’exécution de la procédure sur le serveur est un orphelin Orphelins indésirables –peuvent interférer avec les exécutions valides –consomment des ressources du système augmentation des conflits, baisse des performances

46 46 Traitement des orphelins Prévention Elimination Récupération

47 47 Traitement des orphelins Prévention –numérotation des messages d ’APPEL avec un identificateur unique (uid) associé à l’appel de procédure à distance –serveur écarte tous les messages redondants –conservation du résultat et de l’uid d’un appel en mémoire stable pour faire face à la défaillance du serveur

48 48 Traitement des orphelins Elimination –à l’initiative du site client élimination lors d’une reprise après panne du site client contacte les sites ayant donné lieu à des appels notifie l’appelant –à l ’échéance d’un délai d’exécution dans les systèmes où les horloges des sites sont synchronisées un site élimine un processus qui exécute un appel au bout d ’un temps fixé –à l’initiative du site serveur lorsqu’un site est détecté en panne, les appels qu’il a initialisés sont éliminés

49 49 Traitement des orphelins Récupération –suppose l’existence d ’un mécanisme de reprise après panne des processus –sauvegarde d’un point de reprise lors de chaque appel de procédure à distance –conservation en mémoire stable des numéros de séquence des messages d’APPEL et de RETOUR –conservation des résultats de l’appel en mémoire stable sur le serveur


Télécharger ppt "1 Communications dans les systèmes distribués. 2 On distingue plusieurs niveaux d’abstractions 1. Bas Niveaux : Sockets 2. Niveau intermédiaire : transparence."

Présentations similaires


Annonces Google