31
Systèmes Distribués Les RPC 1 Remote Procedure Call Motivation Idée générale RPC: Modèle et fonctionnement - Conception d’applications C/S - Principe du RPC - Modèle du LPC - Modèle du RPC - Fonctionnement - Problèmes

Systèmes DistribuésLes RPC1 Remote Procedure Call Motivation Idée générale RPC: Modèle et fonctionnement - Conception dapplications C/S - Principe du RPC

Embed Size (px)

Citation preview

Page 1: Systèmes DistribuésLes RPC1 Remote Procedure Call Motivation Idée générale RPC: Modèle et fonctionnement - Conception dapplications C/S - Principe du RPC

Systèmes Distribués Les RPC 1

Remote Procedure Call

• Motivation• Idée générale• RPC: Modèle et fonctionnement

- Conception d’applications C/S - Principe du RPC - Modèle du LPC - Modèle du RPC - Fonctionnement - Problèmes

Page 2: Systèmes DistribuésLes RPC1 Remote Procedure Call Motivation Idée générale RPC: Modèle et fonctionnement - Conception dapplications C/S - Principe du RPC

Systèmes Distribués Les RPC 2

Motivation• Offrir outils familiers pour la conception d’Application distribuées

• Pouvoir appeler « presque » aussi facilement une fonction sur un élément distant que localement

• La fonctions appelante et appelées doivent partager des données

• Pas d’espace mémoire accessible au deux

Ce partage est possible: Modèle d’échange de message

• RPC est un cas particulier du modèle de passage de messages

• Peut être utilisée comme aussi simplement qu’un appel de procédure local, pour la communication entre processus sur des machines différentes ou même sur la même machine.

• Les appels RPC peuvent être synchrone ou asynchrone (libérer le client)

• Le serveur peut utiliser les Threads pour permettre au serveur de continuer à recevoir requêtes

Page 3: Systèmes DistribuésLes RPC1 Remote Procedure Call Motivation Idée générale RPC: Modèle et fonctionnement - Conception dapplications C/S - Principe du RPC

Chap2: Les RPC Réseaux et Systèmes Distribués 3

Idée générale• On différencie le coté appelant (client) du coté appelé (serveur)

• Serveur offre la possibilité à des éléments distants d'appeler une ou plusieurs fonctions à son niveau

• Client appelle localement la fonction sur un élément spécial qui relayera la demande d'appel de fonction coté serveur

• Coté serveur, un élément spécial appellera la fonction et renverra le résultat coté client

• Eléments spéciaux : talons (ou stubs)

Page 4: Systèmes DistribuésLes RPC1 Remote Procedure Call Motivation Idée générale RPC: Modèle et fonctionnement - Conception dapplications C/S - Principe du RPC

Systèmes Distribués Les RPC 4

RPC: Modèle et fonctionnement

Page 5: Systèmes DistribuésLes RPC1 Remote Procedure Call Motivation Idée générale RPC: Modèle et fonctionnement - Conception dapplications C/S - Principe du RPC

Systèmes Distribués Les RPC 5

Conception d’applications C/S Conception d’applications C/S

Conception orientée communication • Définition du protocole de communication (format et syntaxe

des messages échangés par le client et le serveur)• Conception du serveur et du client en spécifiant comment ils

réagissent aux messages échangés

Conception orientée traitement • Construction d’une application conventionnelle dans un

environnement mono-machine• Subdivision de l’application en plusieurs modules pouvant

s’exécuter sur différentes machines

Page 6: Systèmes DistribuésLes RPC1 Remote Procedure Call Motivation Idée générale RPC: Modèle et fonctionnement - Conception dapplications C/S - Principe du RPC

Systèmes Distribués Les RPC 6

Problèmes• Gestion des formats de messages et données par

l’utilisateur (hétérogénéité)• Empaquettage / désempaquettage des messages• Le modèle est souvent asynchrone, ce qui rend la

gestion des erreurs plus complexe• Le modèle n’est pas naturel pour la plupart des

programmeurs

Communication explicite et non transparente

Conception orientée communicationConception orientée communication

Page 7: Systèmes DistribuésLes RPC1 Remote Procedure Call Motivation Idée générale RPC: Modèle et fonctionnement - Conception dapplications C/S - Principe du RPC

Systèmes Distribués Les RPC 7

Objectif : Démarche de conception des applications centralisées

Remote Procedure Call (RPC)• Introduit par Birrell & Nelson (1984)• Garder la sémantique de LPC ( Local Procedure Call )• Fonctionnement synchrone• Communication transparente entre le client et le serveur

Conception orientée applicationConception orientée application

Page 8: Systèmes DistribuésLes RPC1 Remote Procedure Call Motivation Idée générale RPC: Modèle et fonctionnement - Conception dapplications C/S - Principe du RPC

Systèmes Distribués Les RPC 8

procA()

return

procB()

return return

Machine 1 Machine 2 Machine 3

réseau réseau

Programme principal

Procédure A (serveur)

Procédure B (serveur)

RPC : principeRPC : principe

Page 9: Systèmes DistribuésLes RPC1 Remote Procedure Call Motivation Idée générale RPC: Modèle et fonctionnement - Conception dapplications C/S - Principe du RPC

Systèmes Distribués Les RPC 9

Modèle LPC Modèle LPC

Notion de contexte et de pile d’exécution Déroulement

• Empilement

- paramètres (valeurs et références)

- adresse de retour

- variables locales• Exécution du code de la procédure

Passage de paramètres

par valeur, par référence, par copie/restauration

Page 10: Systèmes DistribuésLes RPC1 Remote Procedure Call Motivation Idée générale RPC: Modèle et fonctionnement - Conception dapplications C/S - Principe du RPC

Systèmes Distribués Les RPC 10

Même sémantique que le modèle LPC Position par rapport à OSI

• Couche session

Communication synchrone et transparente Utilisation transparente de sockets en mode connecté

Différentes implémentations• DCE-RPC de l’Open Software Foundation (OSF)• ONC-RPC de Sun (NFS, NIS, etc.)

Le modèle RPCLe modèle RPC

Page 11: Systèmes DistribuésLes RPC1 Remote Procedure Call Motivation Idée générale RPC: Modèle et fonctionnement - Conception dapplications C/S - Principe du RPC

Systèmes Distribués Les RPC 11

Client

Assemblage des paramètres

Désassemblage des résultats

Désassemblage des paramètres

Assemblage des résultats

Serveur

Noyau OSNoyau OS

Réseau

Machine A Machine BStub client Stub serveur

Appel Appel

Retour Retour

FonctionnementFonctionnement

Déroutement Déroutement

Page 12: Systèmes DistribuésLes RPC1 Remote Procedure Call Motivation Idée générale RPC: Modèle et fonctionnement - Conception dapplications C/S - Principe du RPC

Systèmes Distribués Les RPC 12

Passage de paramètres Identification ou nommage

• Localisation (adresse) du serveur• Procédure au sein d’un serveur

Sémantique des RPC en présence d’échecs

ProblèmesProblèmes

Page 13: Systèmes DistribuésLes RPC1 Remote Procedure Call Motivation Idée générale RPC: Modèle et fonctionnement - Conception dapplications C/S - Principe du RPC

Systèmes Distribués Les RPC 13

Noyau OS Noyau OS

Réseau

Machine A Machine BStub client Stub serveur

Exemple

Exemple

...j=3;res=sum(2,j);

...

sum2

3

sum2

3

sum(int i, int j) { return (i+j);}

Page 14: Systèmes DistribuésLes RPC1 Remote Procedure Call Motivation Idée générale RPC: Modèle et fonctionnement - Conception dapplications C/S - Principe du RPC

Systèmes Distribués Les RPC 14

Passage de paramètres par référence impossible• Passage par valeur• Passage par copie/restauration

Passage de structures dynamiques (tableaux de taille variable, listes, arbres, graphes, etc.)

Hétérogénéité des machines• Byte-ordering : ordre de stockage des octets différent

• Représentation des arguments :

codes des caractères, virgule flottante, etc.

Passage de paramètresPassage de paramètres

Page 15: Systèmes DistribuésLes RPC1 Remote Procedure Call Motivation Idée générale RPC: Modèle et fonctionnement - Conception dapplications C/S - Principe du RPC

Systèmes Distribués Les RPC 15

Deux solutions possibles• Codage/décodage de chaque type de donnée de toute

architecture à toute autre architecture• Format universel intermédiaire (XDR, CDR, etc.)

Solution de Sun Microsystems• Format eXternal Data Representation ou XDR • Librairie XDR (types de données XDR + primitives de

codage/décodage pour chaque type)• rpc/xdr.h

Problème d’hétérogénéitéProblème d’hétérogénéité

Page 16: Systèmes DistribuésLes RPC1 Remote Procedure Call Motivation Idée générale RPC: Modèle et fonctionnement - Conception dapplications C/S - Principe du RPC

Systèmes Distribués Les RPC 16

XDR : PrincipeXDR : Principe

Réseau

Machine A Machine B

x : type_A(x : int en C1)

x : type_B(x : int en C2)

x : type_XDR(x : XDR_int sur 32 bits)

Codage Décodage

Page 17: Systèmes DistribuésLes RPC1 Remote Procedure Call Motivation Idée générale RPC: Modèle et fonctionnement - Conception dapplications C/S - Principe du RPC

Systèmes Distribués Les RPC 17

L’encodage XDR des données contient uniquement les données représentées mais aucune information sur leur type• Si une application utilise un entier de 32 bits le

résultat de l’encodage occupera exactement 32 bits et rien n’indiquera qu’il s’agit d’un type entier

• Le client et le serveur doivent alors s’entendre sur le format exact des données qu’ils échangent

XDR : Codage/Décodage (1)XDR : Codage/Décodage (1)

Page 18: Systèmes DistribuésLes RPC1 Remote Procedure Call Motivation Idée générale RPC: Modèle et fonctionnement - Conception dapplications C/S - Principe du RPC

Systèmes Distribués Les RPC 18

Passage de paramètres Identification ou nommage

• Localisation (adresse) du serveur• Procédure au sein d’un serveur

Sémantique des RPC en présence d’échecs

ProblèmesProblèmes

Page 19: Systèmes DistribuésLes RPC1 Remote Procedure Call Motivation Idée générale RPC: Modèle et fonctionnement - Conception dapplications C/S - Principe du RPC

Systèmes Distribués Les RPC 19

Comment un client fait-il pour trouver le serveur ? Solution statique : écrit son adresse dans son code Problème : solution rigide (et si le serveur change

d’adresse !!!)

Solution robuste : nommage dynamique (dynamic binding) Gestionnaire de noms : intermédiaire entre le client et le

serveur Portmapper : processus daemon s’exécutant sur le

serveur

Nommage ou bindingNommage ou binding

Page 20: Systèmes DistribuésLes RPC1 Remote Procedure Call Motivation Idée générale RPC: Modèle et fonctionnement - Conception dapplications C/S - Principe du RPC

Systèmes Distribués Les RPC 20

Client sur machine toto Programme serveur

Portmapper

...cl=clnt_create(‘‘tata’’,... );...

...svc_register(adr,... );...

adr...

Nommage dynamique (1)Nommage dynamique (1)

(1)

(3) (5)adr

(6)

Machine tata

Port 111

(2)

(4)

Page 21: Systèmes DistribuésLes RPC1 Remote Procedure Call Motivation Idée générale RPC: Modèle et fonctionnement - Conception dapplications C/S - Principe du RPC

Systèmes Distribués Les RPC 21

Le serveur s’enregistre auprès du portmapper- Son nom (ou numéro)

- Sa version (car il peut en avoir plusieurs)

- Son adresse (IP, numéro de port) ou handle sur 32 bits

etc. Le portmapper enregistre ces informations dans sa

table de liaisons Le client demande l’adresse du serveur au portmapper

en lui passant le nom et la version du serveur et le protocole de communication à utiliser

Nommage dynamique (2)Nommage dynamique (2)

Page 22: Systèmes DistribuésLes RPC1 Remote Procedure Call Motivation Idée générale RPC: Modèle et fonctionnement - Conception dapplications C/S - Principe du RPC

Systèmes Distribués Les RPC 22

Identification Nom (ou numéro) de son programme Version du programme Nom ou numéro de la procédure

Procédure au sein d’un serveurProcédure au sein d’un serveur

Page 23: Systèmes DistribuésLes RPC1 Remote Procedure Call Motivation Idée générale RPC: Modèle et fonctionnement - Conception dapplications C/S - Principe du RPC

Systèmes Distribués Les RPC 23

Passage de paramètres Identification ou nommage

Localisation (adresse) du serveur Procédure au sein d’un serveur

Sémantique des RPC en présence d’échecs

ProblèmesProblèmes

Page 24: Systèmes DistribuésLes RPC1 Remote Procedure Call Motivation Idée générale RPC: Modèle et fonctionnement - Conception dapplications C/S - Principe du RPC

Systèmes Distribués Les RPC 24

Le client est incapable de localiser le serveur Le serveur est en panne L’interface du serveur a changé Solutions : retourner -1 !!!, exceptions, signaux

La requête du client est perdue Temporisation et ré-émission de la requête

La réponse du serveur est perdue Temporisation et ré-émission de la requête par le client

Différentes classes d’échecsDifférentes classes d’échecs

Page 25: Systèmes DistribuésLes RPC1 Remote Procedure Call Motivation Idée générale RPC: Modèle et fonctionnement - Conception dapplications C/S - Principe du RPC

Systèmes Distribués Les RPC 25

Problème : risque de ré-exécuter la requête plusieurs fois (opération bancaire !!!!)

Solution : un bit dans l’en-tête du message indiquant s’il s’agit d’une transmission ou retransmission

Le serveur tombe en panne après réception d’une requête (i) Après exécution de la requête et envoi de réponse (ii) Après exécution de la requête, avant l’envoi de la

réponse (iii) Pendant l’exécution de la requête Comment le client fait-il la différence entre (ii) et (iii) ?

Différentes classes d’échecsDifférentes classes d’échecs

Page 26: Systèmes DistribuésLes RPC1 Remote Procedure Call Motivation Idée générale RPC: Modèle et fonctionnement - Conception dapplications C/S - Principe du RPC

Systèmes Distribués Les RPC 26

Trois écoles de pensée (sémantiques) Sémantique une fois au moins : le client ré-émet jusqu’à

avoir une réponse (RPC exécuté au moins une fois) Sémantique une fois au plus : le client abandonne et

renvoie un message d’erreur (RPC exécuté au plus une fois)

Sémantique ne rien garantir : le client n’a aucune aide (RPC exécuté de 0 à plusieurs fois)

Le client tombe en panne après envoi d’une requête Requête appelée orphelin. Que doit-on en faire ?

Différentes classes d’échecsDifférentes classes d’échecs

Page 27: Systèmes DistribuésLes RPC1 Remote Procedure Call Motivation Idée générale RPC: Modèle et fonctionnement - Conception dapplications C/S - Principe du RPC

Systèmes Distribués Les RPC 27

Solutions de Nelson Extermination : Le client utilise un journal de trace et tue les orphelins :

solution coûteuse en espace et complexe (orphelins d’orphelins !!!)

Réincarnation : Définition de périodes d’activité incrémentale du client. Après une panne, il diffuse un message indiquant une nouvelle période. Ses orphelins sont détruits.

Réincarnation douce : variante de la précédente. Un orphelin est détruit seulement si son propriétaire est introuvable.

Expiration : Chaque RPC dispose d’un quantum q de temps pour s’exécuter. Il est détruit au bout de ce quantum. Pb : valeur de q ?

Problème de ces solutions : si l’orphelin détruit a verrouillé des ressources ?!!!

Différentes classes d’échecsDifférentes classes d’échecs

Page 28: Systèmes DistribuésLes RPC1 Remote Procedure Call Motivation Idée générale RPC: Modèle et fonctionnement - Conception dapplications C/S - Principe du RPC

Systèmes Distribués Les RPC 28

Méthodologie de développement à base de RPC

Page 29: Systèmes DistribuésLes RPC1 Remote Procedure Call Motivation Idée générale RPC: Modèle et fonctionnement - Conception dapplications C/S - Principe du RPC

Systèmes Distribués Les RPC 29

Client Localiser le serveur et s’y connecter Faire des appels RPC (requêtes de service)

Emballage des paramètres Soumission de la requête Désemballage des résultats

Serveur S’enregistrer auprès du portmapper Attendre les requêtes du client et les traiter

Désemballage des paramètres Appel local du service (procédure) demandé(e) Emballage des résultats

Composants d’une application RPCComposants d’une application RPC

Stub client +Primitives XDR

Stub serveur +Primitives XDR

Page 30: Systèmes DistribuésLes RPC1 Remote Procedure Call Motivation Idée générale RPC: Modèle et fonctionnement - Conception dapplications C/S - Principe du RPC

Systèmes Distribués Les RPC 30

Le client a besoin de connaître le nom symbolique du serveur (numprog,numver) et ses procédures Publication dans un contrat (fichier .x) Langage RPCL

Le serveur a besoin des implémentations des procédures pour pouvoir les appeler Fichier contenant les implémentations des procédures

Serveur et client ont besoin des stubs de communication Communication transparente ==> génération automatique des stubs et des

fonctions XDR de conversion de paramètres RPCGEN (compilateur de contrat) + Runtime RPC

BesoinsBesoins

Page 31: Systèmes DistribuésLes RPC1 Remote Procedure Call Motivation Idée générale RPC: Modèle et fonctionnement - Conception dapplications C/S - Principe du RPC

Systèmes Distribués Les RPC 31

Références

• Pradeep K., Sinha, « Distributed Operating Systems, Concepts and design », IEEE Computer Society Press.

• L. Deruelle, N. Melab, «  Cours RPC », Université du Littoral - Côte d’Opale

• Eric Cariou, « Introduction aux Systèmes Distribués - Appels de procédures à distance : RPC », Université de Pau et des Pays de l'Adour Département Informatique