les appels de procédure distants - 4

Transcription

les appels de procédure distants - 4
LES APPELS DE PROCÉDURE
DISTANTS
Heithem [email protected]
Rappel du schéma client-serveur
2
 
Appel synchrone Requête-Réponse
 
Mise en œuvre
 
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
3
 
 
 
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)
 
Mais cet objectif ne peut être atteint en toute rigueur en présence de défaillances
Avantages attendus
4
 
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
5
 
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
6
1 
Par migration
2 
Par mémoire partagée
3 
Par messages
4 
Par appel léger (LRPC)
Réalisation par migration
1
7
 
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
 
Avantages
  Très
 
de pré-chargement en mémoire.
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.
2
Réalisation en mémoire partagée répartie
8
 
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 en mémoire partagée répartie
9
 
Avantages
  Efficace
en cas de nombreux appels
  Efficace si tout le code et les données ne sont pas visités
  Résout le problème de l’utilisation des pointeurs (références
d’adresses en mémoire)
 
Inconvénients
  Univers
de systèmes homogènes
  Volume de codes et de données à échanger pages par
pages
  Problèmes de partage selon la cohérence de la mémoire
répartie
Réalisation par messages
3
10
 
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)
11
 
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
  Très
nombreuses terminologies dans ce cas : Souches
("Stubs"), Talons, Squelettes ("Skeletons")…
 
Objectif: transformer l’appel local en un appel distant.
3
Notion des souches (2/2)
12
 
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
Les étapes de RPC par messages (1/4)
13
3
Les étapes de RPC par messages (2/4)
14
É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.
3
Les étapes de RPC par messages (3/4)
15
É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.
É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.
3
Les étapes de RPC par messages (4/4)
16
É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.
3
17
Diagramme de RPC par messages
Talon
(stub)
client
Les talons (ou souches) client et serveur sont créés (générés
automatiquement) à partir d’une description d’interface
3
Talon
(stub)
serveur
Description d’interface
18
 
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
3
Avantages/inconvénients
19
 
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.
3
D) Lightweight RPC (LRPC)
20
 
 
 
 
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
4
Lightweight RPC
21
4
4
Avantages et Inconvénients : RPC léger
22
 
Avantages
  Transmission
d’appel très performant comme mode de
RPC local.
 
Limites
  Uniquement
applicable dans une même machine.
Récap. sur les modes de réalisation
23
 
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 + RPC léger
24
Gestion du contrôle
I) Parallélisme chez le client
II) Parallélisme chez le serveur
I) Parallélisme chez le client
25
 
 
Appel de procédure distante en mode
synchrone
Appel de procédure distante en mode
asynchrone
Appel de procédure distante en mode synchrone
26
 
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.
Appel de procédure distante en mode synchrone
27
 
 
Solution au problème de l’inactivité du client : création
des activités concurrentes
Création de (au moins) deux activités (‘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.
Appel de procédure distante en mode asynchrone
28
 
 
 
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.
II) Parallélisme chez le serveur
29
Exécution séquentielle des appels
  Exécution parallèle des appels
 
Exécution séquentielle des appels
30
 
 
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 « premier arrivé
premier servi », on a un traitement ordonné des suites
d’appels.
Exécution parallèle des appels
31
 
Dans ce mode le serveur créé un processus ou une activité
(un processus léger ou "thread") pour chaque appel
 
 
 
Gestion possible de pool de processus ou d’activités
Les appels sont exécutés concurremment.
Si les procédures manipulent des données globales
persistantes sur le site serveur, le contrôle de concurrence
doit être géré.
32
Gestion des données
I) Gestion des données applicatives persistantes.
II) Gestion des données protocolaires persistantes.
Gestion des données applicatives
sans données partagées persistantes
33
L’appel de procédure s’exécute en fonction
uniquement des paramètres d’entrée : en produisant
uniquement des paramètres résultats.
  Données locales à la procédure  pas de problème.
  Il n’y a pas de modification de données persistantes
sur le site serveur.
  Situation très favorable
 
  pour
la tolérance aux pannes
  pour le contrôle de concurrence
Gestion des données applicatives
partagées persistantes
34
Les exécutions successives manipulent des données
persistantes sur le site serveur:
  Une exécution modifie le contexte sur le site distant
 
  Exemple:
un serveur de fichier réparti, de bases de
données.
=> Problème de contrôle de concurrence
=> Problème des pannes en cours d’exécution
Gestion des données protocolaires
mode avec ou sans état
35
 
 
 
Autre aspect de la persistance des données sur le
serveur.
La terminologie avec ou sans état porte sur l’existence
ou non d’un descriptif pour chaque relation client
serveur au niveau du serveur.
Notion d’état : un ensemble de données persistantes au
niveau du protocole pour chaque relation client serveur.
  Permettrait
de traiter les requêtes dans l’ordre d’émission.
  Permettrait de traiter une requête en fonction des
caractéristiques de la relation client serveur (qualité de
service).
Mode sans état
36
 
 
 
Les appels successifs d’une même procédure s’exécutent
sans liens entre eux.
Il peut y avoir modification de données globales
persistantes sur le site serveur mais chaque opération
du point de vue du protocole s’effectue sans référence
au passé (indépendamment de toutes celles qui ont
précédé).
Exemple : NFS "Network File System" de SUN
  système
 
de fichier réparti basé sur RPC sans état.
Exemple : HTTP "HyperText Transfer Protocol"
  protocole
d’exécution de méthodes distantes sans état.
Mode avec état
37
Les appels successifs s’exécutent en fonction d’un état
de la relation client serveur laissé par les appels
antérieurs.
  La gestion de l'ordre des requêtes est indispensable.
  Exemple :
 
  Opérations
d’achat des produits sur Internet (payement
électronique)
38
Transmission des arguments
I) La transmission par valeur
II) Les autres modes de passage
Transmission par valeur (1/2)
39
 
 
Le seul mode de transmission des données dans les
messages en réseau.
Si le site client et le site serveur utilisent des formats de
données différents : problème syntaxique
=> une conversion est nécessaire.
 
Solution : notion de présentation des données au moyen
d’une 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 (2/2)
40
 
Définir une syntaxe abstraite des données
échangées:
  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
Transmission par valeur
dans l’appel de procédure distante
41
 
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 ?
42
Ê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 retenus dans
l’IDL et les types des différents langages existants
Génération des souches
43
Source code client
Définition de l’interface en
IDL
Source code
serveur
Compilateur IDL
Souche client
Entête
Souche serveur
Compilateur
(C, java, ..)
Compilateur
(C, java,..)
Binaire client
Binaire serveur
Exemples d’IDL
et de format de présentation en RPC
44
 
SUN RPC
 
 
OSF DCE
 
 
Langage Java - Protocole JRMP Java Remote Method Protocol
Microsoft DCOM
 
 
IDL Corba - Format CDR Common Data Representation, Protocole IIOP
SUN Java RMI
 
 
IDL DCE - Format NDR Network Data Representation
OMG CORBA
 
 
RPCL - XDR eXternal Data Representation
MIDL Microsoft IDL - DCOM Protocole ORPC Object RPC Format NDR
Web Services
 
Web Services Definition Language (WSDL) – eXtensible Markup
Language (XML)
Autres modes de transmission :
passage par adresse
45
Le passage par adresse (par pointeur) utilise une
adresse mémoire centrale du site de l’appelant qui
n’a aucun sens sur l’appelé (sauf cas particulier).
  Indispensable de traiter ce problème.
  3 solutions :
 
  Interdiction
totale des pointeurs
  Simulation du passage par adresse en utilisant une
copie restauration
  Passage par adresse en mémoire virtuelle partagée
répartie
A) Interdiction totale des pointeurs
46
 
 
Dans la plupart des RPC, pas de passage des
paramètres par adresse ou de structures de
données contenant des pointeurs.
Introduit une différence dans le développement de
procédures locales et celles destinées à un usage
distant.
B) Simulation du passage par adresse en utilisant une
copie restauration
47
 
Passage 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
B) Simulation du passage par adresse en utilisant une
copie restauration
48
 
 
 
 
Marche bien dans beaucoup de cas mais violation assez inacceptable dans certains cas de la
sémantique du passage.
Exemple de problème
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
B) Simulation du passage par adresse en utilisant une
copie restauration
49
C) Passage par adresse en mémoire virtuelle partagée
répartie
50
Faire réaliser des accès mémoire inter-sites :
mémoire virtuelle partagée répartie
  Solution très satisfaisante mais également très
coûteuse.
  Nécessité d’un système réparti autorisant la
mémoire virtuelle répartie (Chorus, Mach).
  Contrainte: Ne se conçoit que dans un système
réparti de machines de même type (environnement
homogène).
 
51
Désignation et liaison
Désignation
52
 
La structuration des noms et références permet de désigner les
services distants :
Nom symbolique : utilisable au moyen d’un serveur d’annuaire.
  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.
 
Liaison (1/2)
53
 
 
 
 
Comment localiser une procédure distante ?
  Au moyen d’un service de gestion de noms (serveur d’annuaire)
À quel moment effectuer la liaison
  Le plus tôt possible (statique) => plus performant.
  Le plus tard possible (dynamique) => plus souple, moins
performant.
Réalisation de la liaison à la compilation (statique)
  Vision très statique, le serveur ne doit pas bouger.
Réalisation de la liaison en exécution (dynamique)
  Au chargement du client.
  Au moment de la première invocation (ou appel).
  Localiser la procédure (référence), mettre en cache.
  Relocaliser à chaque fois qu’il est nécessaire.
Liaison (2/2)
54
Problèmes
  Le serveur est-il disponible ?
  Solution
 
- fabrique de serveurs (performants)
Est ce que la version de la procédure utilisée est
consistante (stable) ?
  Solution
- gestion d’identificateurs uniques de
procédures (comportant des numéros de version).
 
Existence de serveurs multiples
  Gestion
d’une technique d’équilibrage de charge.
  Gestion de redondances.
Enregistrement d’un serveur
55
Site Serveur
Export(nom)
(1)
Serveur
Retour
Export(nom)
Serveur de nom
(annuaire)
(2)
Retour
Souche
serveur
Enregistrer_local (nom)
(3)
Ajouter_service(nom)
(4)
Enregistrer_global (nom)
Adaptateur
(gestion locale
des noms)
Liaison client-serveur
56
Site Client
Ref=import(nom)
Code client
(1)
Retour ref
Ref=import(nom)
Souche client
(2)
Retour ref
Requête_annuaire (nom)
(4)
Adaptateur client Vérifier (nom)
(3)
Serveur de nom
(d’annuaire)
Recherche (nom)
(5)
Site Serveur
Recherche
(nom)
Retour ref
57
Tolérance aux pannes
Appel local vs Appel distant
58
En appel local
  L’appelant et l’appelé s’exécutent sur la même machine : même
exécutant => mêmes performances et modes de pannes.
  L’appel et le retour de procédure sont des mécanismes internes
considérés comme fiables.
  Problème des erreurs abordé => exceptions chez l’appelant.
En appel distant
  Appelant et appelé peuvent tomber en panne indépendamment.
  Le message d’appel ou celui de retour peuvent être perdus (sauf si
l’on emploie un protocole de transport fiable).
  Le temps de réponse peut-être très long en raison de surcharges
diverses (réseau, site appelé).
RPC : “sémantique” en cas de panne
59
 
Détection de panne = expiration de délai de garde.
 
 
On tente de réexecuter l’appel. Combien de fois la procédure a-t-elle
été exécutée!?
La sémantique : nombre d’exécution de la procédure
(dépend des hypothèses de pannes et du mécanisme de reprise)
 
 
Indéfini (pas d’hypothèses)
Au moins une fois (appel répété, plusieurs exécutions possibles, au moins
une réussit)
 
 
Au plus une fois (0 ou 1 fois)
 
 
acceptable si opération idempotente (2 appels successifs ont le même effet
que 1 appel)
on évite les exécutions répétées, mais on ne garantit pas le succès
Exactement une fois (c’est l’idéal, difficile à atteindre)
Hypothèses de défaillances
60
 
Système de communication
  Congestion
du réseau, messages retardés
  Perte de messages
 
Serveur
  Défaillance
avant l’exécution de la procédure
  Défaillance pendant l’exécution de la procédure
  Défaillance après l’exécution de la procédure
  Défaillance définitive ou reprise possible
 
Client
  Défaillance
pendant le traitement de la requête
Les différents modes de pannes
61
 
Les pannes franches
  Le
 
système s’arrête (fail stop)
Les pannes transitoires
  Perte
 
de messages entre les entité communicantes
Les pannes temporelles
Les pannes franches (1/2)
62
Les pannes franches du serveur
  Attente indéfinie par le client d’une réponse qui ne
viendra jamais => Abandon du programme sur un
temps limite.
  Utilisation
d’un délai de garde par le site appelant
  Absence de réponse : le client choisit la stratégie de reprise:
⇒ Reprise
arrière automatique (si possible) : soit tentative d’exécution
sur un autre site soit reprise sur le même site (si relance)
⇒ 
Plusieurs exécutions successives de la même procédure
pour une seule demande
⇒  Peut
provoquer l’inconsistance (incohérence )de l’état du
serveur
Les pannes franches (2/2)
63
Les pannes franches du client
  Le serveur est dit orphelin ("orphan").
  Réalisation de travaux inutiles.
  Confusion, après relance du client, entre les nouvelles
réponses attendues et les réponses à d’anciennes
requêtes
  Entraine
⇒ 
une inconsistance de l’état du client
Nécessité de détruire les tâches serveurs orphelines et
de distinguer les requêtes utiles des vieilles requêtes.
Les pannes transitoires
64
 
 
 
Des messages sont perdus entre le client et le serveur
Cas facile : pertes traitées par une couche transport
fiable (TCP).
Cas difficile : il existe des RPC implantés pour des
raisons d’efficacité au dessus d’une communication non
fiable (UDP) => Mécanisme de traitement des pertes
de message à prévoir dans la conception du RPC :
  Exemple
1: La réponse acquitte la demande et la prochaine
requête acquitte la réponse.
  Exemple 2: lancer plusieurs exécutions de la même requête.
Les pannes temporelles
65
 
Cas d’un appel de procédure utilisé sous contraintes
de qualité de service temporelle
  application
temps réel
  application multimédia
Temps de réponse : la réponse doit parvenir avant
une date limite définie par une échéance.
  Variation du temps de réponse : La variation du
temps de traitement doit être bornée.
  Gestion de priorités : gestion d’échéances intégrant
les délais réseaux.
 
Gestion des Orphelins (1/3)
66
 
Demande reçue par le serveur suivie d'une panne du
client : requête orpheline
Abandonner le plus vite possible l’exécution en cours.
  En laissant un état cohérent sur le site serveur.
 
1. Extermination
 
 
Une approche de journalisation: la souche client
enregistre en mémoire stable tous les appels en cours.
Lorsqu'un site client est relancé, il doit examiner
l'historique des appels en cours non terminés et demande
la destruction de tous les serveurs orphelins encore actifs.
Gestion des Orphelins (2/3)
67
2. Réincarnation
 
 
 
Une technique de numéros de séquence: en fait un
numéro d'époque (séquence) correspondant aux
périodes d'activité successives du client.
Il doit être enregistré en mémoire stable et doit
marquer toutes les requêtes (appels et réponses).
Lorsqu'un client est relancé il change d'époque
(numéro de séquence) et diffuse sa nouvelle époque à
ses serveurs qui détruisent les appels anciens.
Gestion des Orphelins (3/3)
68
3. Expiration
 
 
Une technique de délais de garde : l'exécution d'un serveur est
toujours associée à une surveillance périodique du client : le
serveur arme des délais de garde.
Si le quantum s'achève, le serveur demande à son client s'il est
encore opérationnel:
 
si le client répond : armement d'un nouveau délai et poursuite.
 
si le client est en panne : abandon cohérent d'exécution.