Beruflich Dokumente
Kultur Dokumente
Modle client-serveur
Michel RIVEILL INP Grenoble / ENSIMAG
Projet IMAG-INRIA SIRAC 655 avenue de l Europe 38330 Montbonnot St Martin
Avril 1999
Avril 1999
Modle Client-Serveur
y client
x programme qui met des requtes (ou demandes de service). Il est toujours linitiateur du dialogue
Avril 1999
Modle client-serveur
Retour(p_out)
end
Avril 1999
client
serveur
4
Modle Client-Serveur
z Vu du serveur
y Gestion des requtes (priorit) y Excution du service (squentiel, concurrent) y Mmorisation ou non de l'tat du client Slection Requtes Traitement Rponses
Avril 1999
Avril 1999
Modle Client-Serveur
Avril 1999
Traitement
Modle Client-Serveur
z Pool d'excutant
while (true) {
work_to_do.get (client_id, service_id, paramtres); do_service [service_id] (paramtres, rsultats); send (client_id, rsultats);
};
requtes Slection
};
Activation
rponses
Traitement
Avril 1999
};
Slection requtes
Cration
rponses
Traitement
Avril 1999
10
Modle Client-Serveur
pas de donne rmanente (ou persistante) z situation idale ou le service s excute uniquement en fonction des paramtres d entre
y pas de modification de donnes rmanente sur le serveur
z exemple :
y calcul d une fonction scientifique
Avril 1999
11
avec donne rmanente (ou persistante) z Les excutions successives manipulent des donnes persistantes
y modification du contexte d excution sur le site distant y problmes de contrle de la concurrence y difficults en cas de panne en cours d excution
z Exemples
y Etat d un objet manipul par ses mthodes y Serveur de fichier rparti
x Pose de verrou pour les oprations d criture
Avril 1999
12
Modle Client-Serveur
z exemple
y serveur de fichiers rpartis : accs alatoire
x criture du nime article d un fichier x NFS (Network File System de SUN - SGF rparti
Avril 1999
13
z exemple
y serveur de fichiers rpartis : accs squentiel y appel de mthode sur un objet
Avril 1999
14
Modle Client-Serveur
y Oprations de base
x Client
doOp (IN Port serverId, Name opName , Msg *arg, OUT Msg *result )
x Serveur
getRequest (OUT Port clientId, Message *callMessage) sendReply (IN Port clientId, Message *replyMessage) opName (Msg *arg, OUT Msg *result)
Avril 1999
15
RPC Objectifs
z Retrouver la smantique habituelle de l appel de procdure
y sans se proccuper de la localisation de la procdure y sans se proccuper du traitement des dfaillances
Avril 1999
16
Modle Client-Serveur
Avril 1999
17
Appel A B
appel
Appel rseau E
return
return
Avril 1999
client
serveur
18
Modle Client-Serveur
y au point A
x le talon collecte les arguments et les assembles dans un message (empaquetage - parameter marshalling) x x x x
Avril 1999
un identificateur est gnr pour le RPC Un dlai de garde est arm Pb : dtermination de l adresse du serveur le talon transmet les donnes au protocole de transport pour mission sur le rseau
19
y l appel est ensuite transmis la procdure distante requise pour tre excut (point C). Le retour de la procdure redonne la main au service de RPC et lui transmet les paramtres rsultats (point D)
Avril 1999
20
10
Modle Client-Serveur
Avril 1999
21
Avril 1999
22
11
Modle Client-Serveur
23
RPC Problmes
z Traitement des dfaillances
y Congestion du rseau ou du serveur
x la rponse ne parvient pas avant une date fixe par le client (systme temps critique)
z Problmes de scurit
y authentification du client y authentification du serveur y confidentialit des changes Performance
y Panne du client pendant le traitement de la requte y Panne du serveur avant ou pendant le traitement de la requte y Erreur de communication
Avril 1999
12
Modle Client-Serveur
Avril 1999
26
13
Modle Client-Serveur
RPC
x si expiration du dlai A alors re-mission de l appel x si expiration du dlai D alors re-mission du rsultat
27
RPC
y Smantique : Exactement UN
x (en l absence de panne permanente du client, du serveur ou du rseau)
Avril 1999 28
14
Modle Client-Serveur
RPC
Avril 1999
29
RPC
Avril 1999
30
15
Modle Client-Serveur
Avril 1999
31
z autres solutions
y Reprsentation externe commune : XDR Sun (non optimal si mme reprsentation) y Reprsentation locale pour le client, conversion par le serveur y Choix d'une reprsentation parmi n (standard), conversion par le serveur y Ngociation client serveur
Avril 1999 32
16
Modle Client-Serveur
RPC
Tas x y z
En-tte x y z
Pile
Avril 1999 33
y copie/restauration
x valeurs des paramtres sont recopies x pas de difficults majeures mais redfinition des solutions dfinies pour les rseaux x optimisation des solutions pour le RPC x bonne adaptation au langage C (faiblement typ)
Avril 1999
34
17
Modle Client-Serveur
Avril 1999
35
reconstruire l tat de la mmoire du client sur le site serveur solutions trs coteuse utilisation d une mmoire virtuelle rpartie ncessite un systme rparti avec mmoire virtuelle
Avril 1999
36
18
Modle Client-Serveur
RPC Dsignation
z Objets dsigner
y Le site d excution, le serveur, la procdure y Dsignation globale indpendante de la localisation
x possibilit de reconfiguration des services (pannes, rgulation de charge, )
z Dsignation
y statique ou dynamique
x statique : localisation du serveur est connue la compilation x dynamique : non connue la compilation, objectifs :
sparer connaissance du nom du service de la slection de la procdure qui va l excuter permettre l implmentation retarde
Avril 1999 37
Liaison et fonctionnement
z Liaison (dtermination de l'adresse du serveur)
y Liaison statique (pas d appel un serveur de nom ou appel lors de la compilation) y Liaison au premier appel (appel du serveur de nom lors du premier appel) y Liaison chaque appel (appel du serveur de nom chaque appel)
Programme client Talon client communication logique Service de dsignation
consultation enregistrement
Communication client
Avril 1999
communication physique
Communication serveur
38
19
Modle Client-Serveur
z Etape 5 et 6
y liaison entre un client et un serveur
z Etape 4, 7, 8,
y ralisation de l appel de procdure souhait
Avril 1999 40
20
Modle Client-Serveur
RPC
Pas de dfaut Pas de dfaut dfaut Serveur dfaut Avril 1999 Serveur 41
z A la charge du serveur
y la copie sur le serveur est la copie de rfrence y le serveur possde la liste des clients qui possdent une copie y le serveur prvient chaque client de la modification de la copie matre (mcanisme de call-back) y TRES LOURD
y Remarque : extension du modle client-serveur puisque le serveur prend linitiative de lchange
21
Modle Client-Serveur
43
Modle client-serveur
Mise en uvre : envoi de message z Mise en uvre l aide d un mcanisme d envoi de message
y par exemple : socket UNIX
Avril 1999
44
22
Modle Client-Serveur
Mise en uvre du
Avril 1999
45
y exemple :
x calcul de fonction numrique x DNS x NFS
Avril 1999
46
23
Modle Client-Serveur
z contraintes
y le client doit avoir accs ladresse du serveur (adresse IP et numro de port) y pour rpondre chaque client, le serveur doit en rcuprer ladresse : il faut pour cela utiliser les primitives sendto et recvfrom
traitement
24
Modle Client-Serveur
y orient vers
x traitement ordonn d une suite d appel
ordre local (requte d un client traite dans leur ordre d mission), global ou causal
Avril 1999
49
25
Modle Client-Serveur
Avril 1999
51
shutdown ()
26
Modle Client-Serveur
Avril 1999
53
RPC
y Approche transparente
x dtection automatique de l appel distant
comment ? liste de noms ou lors de la liaison du cot du client : l appel la procdure est remplac par un appel au talon client (stub) gnr par le compilateur du cot du serveur : le compilateur produit un talon serveur (skeleton) capable de recevoir l appel et de le rediriger vers la procdure
27
Modle Client-Serveur
RPC
Avril 1999
55
IDL
Mode opratoire
Procdure Procdure du client du client compilateur compilateur
stub stub Dfinitions communes
Description d interface
Dfinitions communes
bibliothque
skeleton skeleton
compilateur compilateur
28
Modle Client-Serveur
z Cot client
y Remplacer les appels de procdure distants par des appels au talon client
z Cot serveur
y Au dmarrage le serveur se fait connatre (enregistrement dans un service de dsignation) y recevoir l appel et affectu l appel sur la procdure
z Procdure gnre
y empaquetage des paramtres y identification de la procdure appeler y procdure de reprise aprs expiration des dlais de garde
Avril 1999
57
Avril 1999
58
29
Modle Client-Serveur
rpcgen
Talon_client.c
Interface.h Code_client.c
Talon_serveur.c
Code_serveur.c
cc
Avril 1999
RPC_lib.a
cc
Programme_serveur 59
Programme_client
RPCGEN
exemple d utilisation
Interface
Client
Serveur
Avril 1999
60
30
Modle Client-Serveur
rpcgen interface.x
y produit les fichiers : interface.h, interface_xdr.c, interface_svc.c et interface_clnt.c
Avril 1999
61
status *insert_1(argp, rqstp) Entry *argp; struct svc_req *rqstp; { static status result;
/* insert server code here */ printf ( "serveur : insert %s -%d\n", argp->name.Name_val, argp->agenda);
return (&result); }
62
31
Modle Client-Serveur
main(argc, argv) int argc; char *argv []; { char *host; if (argc < 2) { printf("usage: %s server_host\n", argv[0]); exit(1); } host = argv [1]; distr_agenda_1(host); }
63
64
32
Modle Client-Serveur
z make
y produit deux binaires : client et serveur
Avril 1999 65
Avril 1999
66
33
Modle Client-Serveur
Client-serveur objet
z Motivations
y proprits de lobjet (encapsulation, modularit, rutilisation, polymorphisme, composition) y objet : unit de dsignation et de distribution
z objets "langage" y reprsentation propre au langage : instance d'une classe y exemple : Java RMI z objets "systme" y reprsentation "arbitraire" dfinie par l'environnement d'excution y exemple : CORBA
67
objet client
rfrence
objet serveur
tat Talon client Methode _1 . . Methode _n Systme de communication
appel
Talon serveur
Avril 1999
34
Modle Client-Serveur
Avril 1999
69
Proxy Proxy
Skeleton Skeleton
JVM
JVM
Avril 1999
70
35
Modle Client-Serveur
Naming Naming
Client Client
Serveur Serveur
JVM Client
Skeleton Skeleton
JVM Serveur
Avril 1999
71
36
Modle Client-Serveur
Naming Naming
Client Client
Stub Stub
Serveur Serveur
Skeleton Skeleton JVM Serveur
JVM Client
Avril 1999
73
Avril 1999
74
37
Modle Client-Serveur
Avril 1999
75
z compilation
y compilation des sources (javac) y gnration des stub et skeleton (rmic)
z activation
y lancement du serveur de noms (rmiregistry) y lancement du serveur y lancement du client
Avril 1999
76
38
Modle Client-Serveur
RPC
Description de l interface
Avril 1999
78
39
Modle Client-Serveur
RPC
y crer au moins une instance du serveur y enregistrer au moins une instance dans le serveur de nom (rmiregistry)
Avril 1999 79
Ralisation du serveur
80
40
Modle Client-Serveur
} }
ATTENTION : dans cet exemple le serveur de nom doit tre activ avant la cration du serveur
Avril 1999 81
Java RMI
try { // transformation ddune chane de caractres en entier try { // transformation une chane de caractres en entier Integer II= new Integer(args[0]); Integer = new Integer(args[0]); port = I.intValue (); port = I.intValue (); } catch (Exception ex) { } catch (Exception ex) { System.out.println(" Please enter: Server <port>"); return; System.out.println(" Please enter: Server <port>"); return; } } try { try { // Cration du serveur de nom --rmiregistry // Cration du serveur de nom rmiregistry Registry registry = LocateRegistry.createRegistry(port); Registry registry = LocateRegistry.createRegistry(port);
// Cration d une instance de l lobjet serveur // Cration d une instance de objet serveur HelloServeur obj = new HelloServeur("Coucou, je suis le serveur de port ::"+port); HelloServeur obj = new HelloServeur("Coucou, je suis le serveur de port "+port); // Calcul de l l URL du serveur // Calcul de URL du serveur URL = "//"+InetAddress.getLocalHost().getHostName()+":"+port+"/mon_serveur"; URL = "//"+InetAddress.getLocalHost().getHostName()+":"+port+"/mon_serveur"; Naming.rebind(URL, obj); Naming.rebind(URL, obj); } catch (Exception exc) { ... } catch (Exception exc) { ...
Avril 1999
82
41
Modle Client-Serveur
Ralisation du client
83
Avril 1999
84
42
Modle Client-Serveur
z 2) Activation du serveur
y java HelloImpl y java -Djava.rmi.server.codebase=http://suldrun/
x path indiquant quelle endroit la machine virtuelle cliente va pouvoir chercher le code du stub x Ncessaire si le client et le serveur ne sont pas sur la mme station
z 3) Activation du client
y java HelloClient
Avril 1999 85
Java RMI
Java VM
Client
R_objet1.m ()
Java VM
R_objet1
m ()
Stub R_objet1
Skeleton R_objet1
Avril 1999
86
43
Modle Client-Serveur
Java RMI
Java VM
O2 Client
R_objet1.m ( O2 ) m ( O2 )
Java VM
Objet objet1 clone_O2 Skeleton R_objet1
87
Stub R_objet1
Avril 1999
Java RMI
Objet O2
Java VM
Stub R_O2
Java VM
Objet objet1
m ( R objet )
Client
R_objet1.m ( R O2 )
Stub R_objet1
Skeleton R_objet1
88
Avril 1999
44
Modle Client-Serveur
Java RMI
Objet O2
Java VM
Stub R_O2
Java VM
Objet objet1
m ( R objet )
Client
R_objet1.m ( R O2 )
Stub R_O2
Stub R_objet1
Skeleton R_objet1
89
Avril 1999
z Si chargement dynamique
y le chargeur dynamique utilis par RMI (RMIClassLoader) regarde si la classe demande correspond au niveau de scurit requis
x utilisation d un SecurityManager
Avril 1999
90
45
Modle Client-Serveur
z Des ouvertures
y Serveurs multiplexs ? y Smantique en cas de panne ? y Utilisation d autres protocoles rseaux ?
Avril 1999 91
Avril 1999
92
46
Modle Client-Serveur
y Avantages Inconvnients
x x x x
Avril 1999
univers de systmes homognes. Permet les gros volume de codes ou donnes peu visit usage important de pointeurs. peu de problmes d'entrelacement sur les donnes globales.
93
16 90 128 27 158 68 10 27 49 33
z Serveur
z Total
Avril 1999
606
94
47
Modle Client-Serveur
Microsecondes
606 954 954
2514
606 550 954
y Total
6524
Avril 1999
95
Avril 1999
96
48
Modle Client-Serveur
z Appels parallles
y [Satyanarayanan & Siegel 90]
z Flots
y Mercury [Liskov & Shrira 88]
z RPC "lger"
y [Bershad & al. 90]
Avril 1999
97
49
Modle Client-Serveur
RPC asynchrone
z Le client poursuit son excution aprs l mission du message d appel
y la procdure distante s excute en parallle avec la poursuite du client et retourne les paramtres rsultats en fin de son excution y le client rcupre les rsultats quand il en a besoin (primitive spciale) y avantage : paralllisme plus important y critique le client ne retrouve pas la smantique de l appel de procdure
Avril 1999
99
y futur implicite :
x c est le mcanisme d appel qui construit les objets rsultats
y mode d utilisation :
x la lecture rend un rsultat nul si le rsultat n est pas disponible x la lecture bloque le client si le rsultat n est pas disponible
Avril 1999
100
50
Modle Client-Serveur
Appel de procdure
z Appels de procdure imbriqus
Appel 1() dbut Appel2 () dbut fin Appel3() dbut fin
fin fin
Avril 1999
101
Avril 1999
102
51
Modle Client-Serveur
z outils de dveloppement
y limits la gnration automatique des talons y peu (ou pas) doutils pour le dploiement et la mise au point d'applications rparties
Avril 1999 103
52
Modle Client-Serveur
Avril 1999
105
53