Problèmes de serveur RPC et solutions
Problèmes de serveur RPC et solutions
Damien Pellier (MASTER I Info.) Applications Distribuées 67 / 430 Damien Pellier (MASTER I Info.) Applications Distribuées 68 / 430
Damien Pellier (MASTER I Info.) Applications Distribuées 69 / 430 Damien Pellier (MASTER I Info.) Applications Distribuées 70 / 430
Appel de procédure à distance Fonctions des talons (stubs)
Principe de réalisation
Damien Pellier (MASTER I Info.) Applications Distribuées 71 / 430 Damien Pellier (MASTER I Info.) Applications Distribuées 72 / 430
Damien Pellier (MASTER I Info.) Applications Distribuées 73 / 430 Damien Pellier (MASTER I Info.) Applications Distribuées 74 / 430
Désignation et liaison Désignation et liaison
Urilisation d’un annuaire
2
Liaison à chaque appel : consultation du serveur de noms à chaque appel Talon client annuaire Talon serveur
5
communication
Communication Communication
Programme logique
Programme appelé client serveur
appelant
Service de
Talon client Talon serveur
désignation 1, 2 : le serveur s’enregistre auprès de l annuaire avec
< nom, adr .serveur , numport >
Communication Communication 3, 4, 5 : le client consulte l’annuaire pour trouver < adr .serveur , numport >
client logiciel de serveur
communication à partir de nom
(sockets)
L’appel peut alors avoir lieu
Schémas plus élaborés : attributs (critères de choix)
Damien Pellier (MASTER I Info.) Applications Distribuées 75 / 430 Damien Pellier (MASTER I Info.) Applications Distribuées 76 / 430
Service Serveur
(prog, version)
4543
4. appel
Damien Pellier (MASTER I Info.) Applications Distribuées 77 / 430 Damien Pellier (MASTER I Info.) Applications Distribuées 78 / 430
Problèmes de représentation des paramètres représentation des paramètres
Damien Pellier (MASTER I Info.) Applications Distribuées 79 / 430 Damien Pellier (MASTER I Info.) Applications Distribuées 80 / 430
! Données élémentaires
! Structures simples (tableaux, chaı̂nes, unions)
!
bool t xdr array (xdrs, arrp, sizep, maxsize, elsize, elproc)
Traitement de pointeurs, gestion de mémoire
XDR *xdrs
Utilisation : programmes d emballage/déballage char **arrp
! Courante : par les générateurs automatiques de talons, dans tous les cas usuels u int *sizep, maxsize, elsize
!
xdrproc t elproc ;
Avancée : directement par le programmeur, pour le traitement de structures de
données complexes *arrp : pointeur vers tableau
*sizep : nombre d éléments de taille elsize
maxsize : nombre max d éléments
elproc : filtre xdr pour convertir l élément (exemple : xdr int pour tableau d’entiers)
Damien Pellier (MASTER I Info.) Applications Distribuées 81 / 430 Damien Pellier (MASTER I Info.) Applications Distribuées 82 / 430
Passage des paramètres Passage des paramètres
Damien Pellier (MASTER I Info.) Applications Distribuées 83 / 430 Damien Pellier (MASTER I Info.) Applications Distribuées 84 / 430
Procédure Question
void double incr(x, y) Quel est l’effet qu’aura la séquence Principe de la détection de panne
x = x+1 d’opérations suivante : ! Détection de panne = expiration de délai de garde
y = y+1 a := 0 ; ! On tente de réexecuter l’appel
double incr(a, a) ! Problème : combien de fois la procédure a-t-elle été exécutée ?
La sémantique dépend des hypothèses de pannes et du mécanisme de reprise
copie ! Indéfini (pas d hypothèses)
+1 +1 ! Au moins une fois (appel répété, plusieurs exécutions possibles, au moins une
x x 0 0 réussit)
+1 +1
y y 0 0 " acceptable si opération idempotente (2 appels successifs ont le même effet que
1 appel)
a 0 initial
référence initial traitement ! Au plus une fois (0 ou 1 fois)
a 0
" on évite les exécutions répétées, mais on ne garantit pas le succès
a 2 final 1 1
! Exactement une fois (c est l idéal, difficile à atteindre)
1 1
a 1 final restauration
Damien Pellier (MASTER I Info.) Applications Distribuées 85 / 430 Damien Pellier (MASTER I Info.) Applications Distribuées 86 / 430
Traitement des défaillances Traitement des défaillances A B C
E D
Damien Pellier (MASTER I Info.) Applications Distribuées 87 / 430 Damien Pellier (MASTER I Info.) Applications Distribuées 88 / 430
E D E D
Damien Pellier (MASTER I Info.) Applications Distribuées 89 / 430 Damien Pellier (MASTER I Info.) Applications Distribuées 90 / 430
Génération des talons Génération des talons
application gcc
Principe client
proc_client.c
exécutable
client
talon client
! La structure des talons est bien définie et ils peuvent être créés proc_cInt.c
automatiquement
! Renseignements nécessaires
description
" Dépendants de l environnement local : procédures de conversion, protocole de conversion définition bibliothèque
d'interface rpcgen
proc_xdr.c proc.h
communication proc.x
Damien Pellier (MASTER I Info.) Applications Distribuées 91 / 430 Damien Pellier (MASTER I Info.) Applications Distribuées 92 / 430
Damien Pellier (MASTER I Info.) Applications Distribuées 93 / 430 Damien Pellier (MASTER I Info.) Applications Distribuées 94 / 430
Utilisation de rpcgen Utilisation de rpcgen
modèle de programme client : annuaire client.c
Damien Pellier (MASTER I Info.) Applications Distribuées 95 / 430 Damien Pellier (MASTER I Info.) Applications Distribuées 96 / 430