Remote Procedure Call Motivation Idée générale

Slides:



Advertisements
Présentations similaires
Module Architectures et Administration des réseaux
Advertisements

GEF 435 Principes des systèmes dexploitation Structure du logiciel dE/S Partie II (Tanenbaum & 5.3.4)
Introduction aux environnements répartis
Retour sur RMI.
ESSI AM Dery Merci à Rémi Vankeisbelck, Michel Riveill etc
Synchronisation des processus père - fils
Serveur jeu Le serveur fait partie d'un logiciel de jeu en ligne multi joueur en architecture client serveur. Il répond à des demandes.
Module Systèmes dexploitation Chapitre 6 Communication Interprocessus Partie III École Normale Supérieure Tétouan Département Informatique
GEF 435 Principes des systèmes dexploitation Communication Interprocessus (CIP) III (Tanenbaum 2.3)
Chapitre 1 Introduction
Exposé de Système - Informatique et Réseau
Architecture de réseaux
C.


Université du Littoral - Côte d’Opale
CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV EJB Entité Module Java Expert.
ESIEE Paris © Denis BUREAU I N Initiation à la programmation avec le langage Java.
UDP – User Datagram Protocol
Principes de programmation (suite)
Etude des Technologies du Web services
Démarche de résolution de problèmes
Architecture Réseau Modèle OSI et TCP.
Java Remote Method Invocation (RMI)
Labview Programmation réseau Communication par sockets
Le modèle de référence OSI
© 2007 P. Van Roy. All rights reserved. FSAB1402: Informatique 2 Le Langage Java et les Exceptions Peter Van Roy Département dIngénierie Informatique,
Quest-ce quune classe dallocation? Une classe dallocation détermine la portée et la durée de vie dun objet ou dune fonction.
CAT 2000 LES MIDDLEWARES Présenté par : Tagmouti Siham Smires Ali
.Net Remoting.
Les pointeurs Modes d’adressage de variables. Définition d’un pointeur. Opérateurs de base. Opérations élémentaires. Pointeurs et tableaux. Pointeurs et.
Les Fonctions. Définir une fonction Sections de code indépendantes que lon peut appeler à nimporte quel moment et dans nimporte quel ordre. Bout de code.
Contrôle de types Les types en programmation Expressions de types Un contrôleur de types Equivalence de types Conversions de types Généricité.
RPC / MOM : Comparaison.
Chapitre 9 Les sous-programmes.
Méthode et Outils pour la Programmation
Leçon 1 : notion dobjet IUP Génie Informatique Besançon Méthode et Outils pour la Programmation Françoise Greffier Université de Franche-Comté.
Procédures et fonctions
Plan cours La notion de pointeur et d’adresse mémoire.
Fondements de l’algorithmique des réseaux
Développement d’application client/serveur
Structures de données avancées : Concepts réseaux et protocole de communication. D. E ZEGOUR Institut National d ’Informatique.
OSI et TCP/IP CNAM
Le contenu est basé aux transparents du 7 ème édition de «Software Engineering» de Ian Sommerville«Software Engineering» de Ian Sommerville B.Shishedjiev.
CEG3585/CEG3555 Tutorat 2 Hi ver 2013.
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
© 2005 P. Van Roy. All rights reserved. FSAB1402: Informatique 2 Le Langage Java Peter Van Roy Département d’Ingénierie Informatique, UCL
Programmation Système et Réseau
Introduction au langage C Fonctions et Procédures
Les Réseaux Informatiques Clients & Serveurs Le protocole FTP Laurent JEANPIERRE DEUST AMMILoR.
Les sockets.
Méthodes et outils de conception Introduction à la programmation Paramètre de retour Appel d’une fonction Portée des variables Définition Pourquoi les.
CSI 3525, Implémentation des sous-programmes, page 1 Implémentation des sous-programmes L’environnement dans les langages structurés en bloc La structure.
1 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. Tél Fax Jean-Jacques Girardot
ISBN Chapitre 10 L'implémentation des sous- programmes.
PHP 6° PARTIE : LES SESSIONS 1.Introduction 2.Identificateur de session 3.Variables de session 4.Client / Serveur 5.Principe 6.Ouverture de session 7.Enregistrement.
Les RPC remote procedure call
COMPARAISON ENTRE GNUTELLA ET FREENET
Les bases du protocole Modbus
Patricia Renault UPMC 2005/2006
Architecture Client/Serveur
8PRO107 Éléments de programmation Les adresses et les pointeurs.
SOAP et les RPC XML SOAP WSDL RPC. Rappels sur le XML Langage avec des balises Très lisible Pour stocker des données Séparation entre contenu et présentation.
Java Remote Method Invocation
Chapitre8 Configuration de l'adressage TCP/IP et de la résolution de noms Module S41.
Chapitre 12 Surveillance des ressources et des performances Module S41.
Applications distribuées Introduction Jean-Jacques LE COZ.
1 UNIX AVANCE Yves PAGNOTTE – Janvier – LES PROCESSUS SOUS UNIX.
Transcription de la présentation:

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és Les RPC

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 Systèmes Distribués Les RPC

Réseaux et Systèmes Distribués 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) Chap2: Les RPC Réseaux et Systèmes Distribués

RPC: Modèle et fonctionnement Systèmes Distribués Les RPC

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 Systèmes Distribués Les RPC

Conception orientée communication 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 Systèmes Distribués Les RPC

Conception orientée application 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 Systèmes Distribués Les RPC

RPC : principe Machine 1 Machine 2 Machine 3 Programme principal Procédure A (serveur) Procédure B (serveur) procA() procB() return return return réseau réseau Systèmes Distribués Les RPC

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 Systèmes Distribués Les RPC

Le modèle RPC 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.) Systèmes Distribués Les RPC

Fonctionnement Machine A Stub client Stub serveur Machine B Client Assemblage des paramètres Désassemblage des paramètres Appel Appel Client Serveur Désassemblage des résultats Assemblage des résultats Retour Retour Noyau OS Déroutement Déroutement Noyau OS Réseau Systèmes Distribués Les RPC

Problèmes 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 Systèmes Distribués Les RPC

Exemple sum sum 2 2 3 3 Machine A Machine B ... j=3; Noyau OS Noyau OS Stub client Stub serveur Machine B sum(int i, int j) { return (i+j); } ... j=3; res=sum(2,j); sum sum 2 2 3 3 Noyau OS Noyau OS Réseau Systèmes Distribués Les RPC

Passage de paramètres 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. Systèmes Distribués Les RPC

Problème d’hétérogénéité 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 Systèmes Distribués Les RPC

XDR : Principe x : type_A x : type_B Machine A Machine B (x : int en C1) x : type_B (x : int en C2) Décodage Codage x : type_XDR (x : XDR_int sur 32 bits) Réseau Systèmes Distribués Les RPC

XDR : Codage/Décodage (1) 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 Systèmes Distribués Les RPC

Problèmes 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 Systèmes Distribués Les RPC

Nommage ou binding 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 Systèmes Distribués Les RPC

Nommage dynamique (1) (6) (1) (2) (3) (5) (4) ... adr Portmapper Machine tata Client sur machine toto Programme serveur ... cl=clnt_create(‘‘tata’’,... ); ... svc_register(adr,... ); (6) (1) (2) ... (3) (5) adr adr Port 111 Portmapper (4) Systèmes Distribués Les RPC

Nommage dynamique (2) 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 Systèmes Distribués Les RPC

Procédure au sein d’un serveur Identification Nom (ou numéro) de son programme Version du programme Nom ou numéro de la procédure Systèmes Distribués Les RPC

Problèmes 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 Systèmes Distribués Les RPC

Différentes classes d’échecs 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 Systèmes Distribués Les RPC

Différentes classes d’échecs 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) ? Systèmes Distribués Les RPC

Différentes classes d’échecs 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 ? Systèmes Distribués Les RPC

Différentes classes d’échecs 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 ?!!! Systèmes Distribués Les RPC

Méthodologie de développement à base de RPC Systèmes Distribués Les RPC

Composants d’une application RPC 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 Stub client + Primitives XDR Stub serveur + Primitives XDR Systèmes Distribués Les RPC

Besoins 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 Systèmes Distribués Les RPC

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 Systèmes Distribués Les RPC