Vous êtes sur la page 1sur 44

Chapitre 3:

LES APPELS DE
PROCÉDURE
DISTANTS
Contexte

Les systèmes distribues modernes consistent souvent en des milliers voire des
millions de processus disperses sur des réseaux peu fiables.

→ Comment peuvent-ils communiquer ?

Une solution = Les RPCs (Remote Procedure Call)

– Un modele tres repondu de communication entre des processus d’un systeme


distribue

● Objectif : Un processus appel localement une procédure qui est réellement


implémentée sur une machine distante
Rappel du schéma CS

Appel synchrone Requête-Réponse

! Mise en oeuvre
Bas niveau : utilisation directe du transport : sockets (construit sur
!

TCP ou UDP)
" Exemple : utilisation des sockets en C
!Haut niveau : intégration dans un langage de programmation : RPC
(construit sur sockets)
" Exemple : RPC en C
Définition

Appel de procédure à distance (Remote Procedure Call, ou RPC) : un


outil pour construire des applications client-serveur dans un langage de
haut niveau
! L’appel et le retour ont lieu sur un site , l’exécution se déroule sur un site

distinct

L’effet de l’appel doit être identique dans les deux situations (local et
distant)
Les RPCs

Objectif :
permettre aux programmes d’appeler des procedures situees sur d'autres machines.

● Lorsqu'un processus sur la machine A appelle une procedure sur le machine B,


le processus d'appel sur A est suspendu et l'execution de la procedure a lieu sur B.

● Les informations sont acheminees dans les parametres et les resultats de la procedure.
– Aucune transmission de message n’est visible au programmeur.
Les approches à RPC

 SUN ONC/RPC
 Open Network Computing / Remote Procedure Call

 OSF DCE
 Open Software Foundation - Distributed Computing Environnment

 Systèmes de gestion de bases de données: procédures stockées.


 OMG CORBA
 Object Management Group - Common Object Request Broker Architecture

 SUN Java RMI ❙


 Remote Method Invocation
 MOM –Middleware Oriented Message
 Microsoft - DCOM
 Distributed Component Object Mod
Avantages attendus

!Facilité de programmation
! La complexité des protocoles de communication est cachée
! Ne pas avoir à programmer des échanges au niveau réseau

! Facilité de mise au point : une application peut être


mise au point sur un site unique, puis déployée sur
plusieurs sites
! Portabilité : résulte de l’usage d’un langage de haut
niveau
! Indépendance par rapport au système de communication
Problèmes de réalisation

! Transmission des paramètres


! conversion entre la forme interne, propre à un langage,
et une forme adaptée à la transmission

! Gestion des processus


! Séquentielle et parallèle

! Réaction aux défaillances


! Trois modes de défaillance indépendants : client, serveur, réseau
Mise en œuvre

1. Par migration
2. Par mémoire partagée
3. Par messages
4. Par appel léger (LRPC)
Réalisation par migration

Stratégie de migration
! Le code et les données de la procédure distante sont amenés sur le
site appelant pour y être exécutés par un appel local habituel.
! Analogie
! Stratégie de pré-chargement en mémoire.
! Avantages
! Très efficace pour de nombreux appels
! Inconvénients
! Univers d’exécutions homogènes (ex machine virtuelle).
! Performances selon le volume de codes et de données.
! Problèmes de partage des objets.
Réalisation en mémoire partagée répartie

 L’appel distant est réalisé en utilisant une mémoire virtuelle partagée


répartie
 La procédure est installée pour le client comme pour le serveur dans la
mémoire virtuelle partagée répartie.
Mais, réellement, elle est dans l’espace mémoire du serveur.
 L’appel du client se fait comme si la procédure était
locale, provoquant un premier défaut de page sur le début du code de la
procédure.
 Le code et les données de la procédure distante sont amenés page par
page sur le site appelant selon le parcours du code et des données.
! Analogie avec une stratégie page à la demande.
2
Réalisation par messages

Deux messages (au moins) échangés : requête et réponse


 Le premier message correspondant à la requête est celui de l'appel de procédure,
porteur des paramètres d'appel.
 Le second message correspondant à la réponse est celui du retour de procédure
porteur des paramètres résultats.
Notion des souches (1/2)

Un mode de réalisation par interception (wrapping)


! Une procédure intercepteur (wrapper) intercepte l’appel
d’un client vers un serveur et modifie le traitement serveur à
sa guise
! Décomposition en traitements avant et après le
traitement serveur
! Décomposition en intercepteur coté client, souche client,
et intercepteur coté serveur, souche serveur
! Souches (ou Stubs) =Talons = Squelettes (ou Skeletons)…
! Objectif: transformer l’appel local en un appel distant
Notion des souches (2/2)

 La souche client ("client stub")

 Intercepteur (procédure) coté client qui reçoit l’appel en mode local,


Le transforme en appel distant,
 Envoie message d’appel de procédure,
 Reçoit le message contenant les résultats après l’exécution,
 Retourne les résultats comme dans un retour local de procédure.

 La souche serveur ("server stub")

 Intercepteur (procédure) coté serveur qui reçoit le message d’appel,


 Fait réaliser l’exécution sur le site serveur par la procédure serveur,
 Récupère les résultats et retransmet les résultats par message.
3
Etapes de RPC par messages (1/2)

Étape 1 : Le client réalise un appel procédural vers la procédure souche client,


la souche client collecte les paramètres , les emballe dans le message d’appel
! Étape 2 : La souche client demande à une entité de transport locale la

transmission du message d'appel


! Étape 3 : Le message d’appel est transmis sur un réseau au site serveur

Étape 4 : Le message d’appel est


délivré à la souche serveur La souche
serveur déballe les paramètres
! Étape 5 : La souche serveur réalise
l’appel effectif de la procédure
serveur
Etapes de RPC par messages (2/2)

Étape 6 La procédure serveur ayant terminé son exécution transmet à la souche serveur
dans son retour de procédure les paramètres résultats. La souche serveur collecte les
paramètres retour, les emballe dans un message.
! Étape 7 La procédure souche serveur demande à l ’entité de transport serveur la

transmission du message de réponse.

! Étape 8 : Le message de réponse


est transmis sur un réseau au site
client.
! Étape 9 : Le message de réponse

est délivré à la souche client. La


souche client déballe les
paramètres résultats.
! Étape 10 : La procédure souche

client transmet les résultats au client


en effectuant un retour habituel de
procédure en mode local.
Diagramme de RPC par messages

Les talons (ou souches) client et serveur sont créés (générés automatiquement) à partir d’une
description d’interface
Description d’interface

! Interface = “contrat” entre client et serveur

! Définition commune abstraite


! Indépendante d’un langage particulier (adaptée à des langages
multiples)
! Indépendante de la représentation des types
! Indépendante de la machine (hétérogénéité)
! Contenu minimal
! Identification des procédures (nom, version)
! Définition des types des paramètres, résultats
! Définition du mode de passage (IN, OUT, IN-OUT)
! Extensions possibles
! Procédures de conversion pour types complexes
RPC par message

! Avantages

! Applicable en univers hétérogènes moyennant des


conversions
! Partage d’accès sur le site serveur

! Inconvénients
! Pas d’usage des pointeurs dans les paramètres
! Échange de données complexes/de grande taille
délicat
! Peu efficace pour de très nombreux appels
Lightweight RPC (LRPC)

Quand on appelle un serveur qui se trouve sur la même machine, la traversée des
couches réseaux est inutile et coûteuse
# Optimisation de la communication

! Problème: Client et Serveur (2 processus) qui se trouvent dans deux domaines de


protection différents !

! Solution: la communication réseau est réalisée par un segment de mémoire


partagée entre le client et le serveur qui contient une pile pour les paramètres d’appel
et de réponse.

! LRPC: principe de RPC mais entre processus locaux s'exécutant sur la même
machine
Lightweight RPC (LRPC)

! Avantages
! Transmission d’appel très performant comme mode de RPC local.
! Limites
! Uniquement applicable dans une même machine.
Synthèse sur les modes de réalisation

! RPC par messages :


! Le premier modèle implémenté
! Supporte l’hétérogénéité

! Le plus simple à réaliser


" RPC, RMI, DCE, CORBA, DCOM, SOAP
!Des optimisations peuvent être obtenues par
l’usage des autres solutions
! Exemple :
" Chorus
a développé les quatre solutions.
" DCOM a développé RPC par messages + LRPC
“ Transmission
des arguments

Transmission par valeur

!Le seul mode de transmission des données dans les messages en réseau
! Si le client et le serveur utilisent des formats de de données
différents $ Conversion
! Définition du couple syntaxe abstraite/syntaxe de transfert des
données échangées:

! Syntaxe abstraite
! analogue à celles des langages évolués,
! facile à générer pour un développeur d’application
! À partir de la syntaxe abstraite : codage/décodage de la syntaxe de
Transfert

! Syntaxe de transfert : une représentation lexicale des données


simples et une convention d’alignement (emballage/déballage) des
données commune au client et au serveur
Transmission par valeur
dans l’appel de procédure distante

!En appel de procédure distante :


! génération automatique du code des souches à partir de la
syntaxe abstraite
! les souches fabriquent la syntaxe de transfert en réalisant
l’alignement (emballage/déballage) des paramètres dans les
messages.

Définition des nouveaux langages de syntaxe abstraite


 adaptés aux appels de procédure distante :
Interface Definition Language (IDL)
Pourquoi les langages IDL ?

! Être indépendant des langages évolués utilisant le RPC

! Permettre l’appel distant avec tout langage évolué

! Définition d’un langage pivot (intermédiaire) de description de


données ayant des fonctionnalités assez riches pour les langages les
plus récents.

! Notion de correspondance entre les types d’IDL et les


types des langages existants
Exemples d’IDL
et de format de présentation en RPC

! SUN RPC
! RPCL - XDR eXternal Data Representation
! OSF DCE
! IDL DCE - Format NDR Network Data Representation
! OMG CORBA
! IDL Corba - Format CDR Common Data Representation, Protocole IIOP
! SUN Java RMI
! Java - Protocole JRMP Java Remote Method Protocol
! Microsoft DCOM
! MIDL Microsoft IDL - DCOM Protocole ORPC Object RPC Format NDR
! Services Web
! Web Services Definition Language (WSDL) – SOAP
Autres modes de transmission :
passage par adresse

Le passage par adresse utilise une adresse mémoire centrale du site de


l’appelant qui n’a aucun sens sur l’appelé (sauf cas particulier)

! 3 solutions :

! Interdiction totale des pointeurs "La solution la plus répandu


! Passage par adresse en mémoire virtuelle partagée répartie
! Simulation du passage par adresse en utilisant une copie
restauration
Simulation par copie restauration

!A l’appel: copie des valeurs des paramètres de l’appelant vers l’appelé


! Au retour: copie de nouvelles valeurs pour les paramètres de l’appelé vers
l’appelant

Marche bien dans beaucoup de cas mais violation dans certains cas de la
sémantique du passage
Simulation par copie restauration

!Exemple du problème de violation


procédure double_incr ( x , y ) ;
x , y : entier ;
début
x := x + 1 ;
y := y + 1 ;
fin ;
Séquence d’appel : passage par adresse
a := 0 ;
double_incr ( a , a ) ;
Résultat attendu : a = 2
Utilisation d’une copie restauration
Résultat obtenu : a = 1

Désignation et liaison


Désignation

 La structuration des noms et références permet de désigner les services distants :


Nom symbolique : une chaîne de caractères désignant la procédure dans un
annuaire ou serveur de nom
Référence : une structure de données permettant de réaliser l’appel
 Référence : selon l’implantation considérée:
Désignation du protocole permettant l’accès distant (TCP ou UDP)
Désignation de l’hôte où se trouve le serveur (adresse IP)
Désignation du point d’accès de service transport (numéro de port)
 Désignation de la procédure
 Serveur de nom : une table qui assure la correspondance entre nom symbolique et
référence
Liaison

 Moment de liaison : précoce (statique) ou tardive (dynamique)


 Statique :
 localisation du serveur connue à la compilation
 pas d’appel à un serveur de noms (ou appel à la compilation)
 Dynamique : localisation au moment de l’exécution, non connue à la
compilation
 Désignation symbolique des services (non liée à un site d’exécution)
 Liaison au premier appel : consultation du serveur de noms au premier
appel seulement
 Liaison à chaque appel : consultation du serveur de noms à chaque appel
 1, 2 : le serveur s’enregistre auprès de
l’annuaire avec nom,
@serveur, #port
 3, 4, 5 : le client consulte l’annuaire pour
trouver @serveur, #port à partir du nom
symbolique
 L’appel peut alors avoir lieu
RPC : désignation et liaison utilisant
le portmapper

 Si le serveur est connu (cas fréquent): on peut utiliser un service de nommage local au
serveur, le portmapper
 Un service enregistre le n° de port de son veilleur auprès du portmapper et le veilleur se
met en attente sur ce port
 Le portmapper a un n° de port fixé par convention (111)
 Solution proposée par les RPC ONC, un programme de binding (RFC 1823) :
 le portmapper (version 2) : spécifique à TCP/UDP: le portmapper est lui-même un
serveur rpc.
 rpcbind (versions 3 et 4) : indépendant du transport

Gestion du contrôle


Contrôle client : RPC en mode
synchrone

 L’exécution du client est suspendue tant que la réponse du serveur n’est pas revenue
ou qu’une condition d’exception n’a pas entraîné un traitement spécifique

 Avantage : le flot de contrôle est le même que dans l’appel en mode centralisé.
 Inconvénient : le client reste inactif.
 Solution au problème de l’inactivité du client : création des activités concurrentes
 Création de (au moins) deux activités (« processus léger » ou « threads ») sur le site
client:
 L’une occupe le site appelant par un travail à faire.
 L’autre gère l’appel en mode synchrone en restant bloquée :
Le fonctionnement est exactement celui d’un appel habituel.
Contrôle client : RPC en mode
asynchrone

 Le client poursuit son exécution immédiatement après l’émission du message


porteur de l’appel
 La procédure distante s’exécute en parallèle avec la poursuite du client
 Le client doit récupérer les résultats quand il en a besoin
Contrôle serveur : exécution
séquentielle des appels

 Les requêtes d’exécution sont traitées l’une après l’autre par le serveur exclusion
mutuelle entre les traitements.
 Si la couche transport assure la livraison en séquence et que l’on gère une file
d’attente « FIFO : premier arrivé premier servi », on a un traitement ordonné des
suites d’appels.
Contrôle serveur: exécution parallèle
des appels

 le serveur créé un processus ou une activité (« processus léger » ou « thread »)


pour chaque appel
 Gestion possible de pool de processus ou d’activités
 Les appels sont exécutés en parallèle.
 Si les procédures manipulent des données globales persistantes sur le site
serveur, le contrôle de concurrence doit être géré.

Vous aimerez peut-être aussi