L'appel de procédure à distance ou RPC est une technique puissante pour créer des applications distribuées basées sur client-serveur. Il est également appelé appel de fonction ou appel de sous-programme. Un appel de procédure à distance se produit lorsqu'un programme informatique provoque l'exécution d'une procédure dans un espace d'adressage différent, codé comme un appel de procédure locale, sans que le programmeur indique explicitement les détails de l'interaction à distance. Le programmeur écrit essentiellement le même code, que le sous-programme soit local au programme en cours d'exécution ou distant. Il s'agit d'une forme d'interaction client-serveur mise en œuvre via un système de transmission de messages requête-réponse.
Le modèle RPC implique transparence de l'emplacement que les procédures d'appel sont en grande partie les mêmes, qu'elles soient locales ou distantes. Habituellement, ils ne sont pas identiques, de sorte que les appels locaux peuvent être distingués des appels distants. Les appels à distance sont généralement beaucoup plus lents et moins fiables que les appels locaux, il est donc important de les distinguer.
Les RPC sont une forme de communication inter-processus (IPC), dans la mesure où différents processus ont des espaces d'adressage différents. Ils disposent d'espaces d'adressage virtuels distincts sur la même machine hôte, même si l'espace d'adressage physique est le même. Alors que s’ils se trouvent sur des hôtes différents, l’espace d’adressage physique est différent.
Comment passer un appel de procédure à distance
L'environnement appelant est suspendu, les paramètres de procédure sont transférés à travers le réseau vers l'environnement dans lequel la procédure doit s'exécuter, et la procédure y est exécutée.
Lorsque la procédure se termine et produit ses résultats, elle est retransférée vers l'environnement appelant, où l'exécution reprend comme si elle revenait d'un appel de procédure normal.
REMARQUE : RPC est particulièrement bien adapté à l'interaction client-serveur (par exemple, requête-réponse) dans laquelle le flux de contrôle alterne entre l'appelant et l'appelé. Conceptuellement, le client et le serveur ne s'exécutent pas simultanément ; au lieu de cela, le fil d'exécution passe de l'appelant à l'appelé, puis revient.
Types de RPC
Il existe trois types d'appels de procédure à distance (RPC) dans un système d'exploitation, tels que :
1. Rappel RPC
Ce type de RPC permet un paradigme P2P entre les processus participants. Cela aide un processus à être à la fois un service client et un service serveur. Le rappel RPC a les fonctions suivantes, telles que :
conversion d'une chaîne en date
- Problèmes d'application interactive traités à distance.
- Offre un serveur avec un handle client.
- Le rappel fait attendre le processus client.
- Gérez les blocages de rappel.
- Il facilite un paradigme peer-to-peer entre les processus participants.
2. Diffusion RPC
Broadcast RPC est une requête d'un client diffusée sur le réseau, traitée par tous les serveurs avec la méthode de traitement de cette requête. Broadcast RPC a les fonctions suivantes, telles que :
- Permet de spécifier que le message de demande du client doit être diffusé.
- Vous pouvez déclarer des ports de diffusion.
- Cela permet de réduire la charge sur le réseau physique.
3. RPC en mode batch
Le RPC en mode batch permet de mettre en file d'attente, de séparer les requêtes RPC, dans un tampon de transmission, côté client, puis de les envoyer sur un réseau en un seul lot au serveur. Le RPC en mode batch a les fonctions suivantes, telles que :
- Il minimise la surcharge liée à l'envoi d'une requête en les envoyant via le réseau en un seul lot vers le serveur.
- Ce type de protocole RPC n'est efficace que pour une application nécessitant des taux d'appels inférieurs.
- Il a besoin d’un protocole de transmission fiable.
Que fait le RPC ?
Lorsque les instructions de programme utilisant le framework RPC sont compilées dans un programme exécutable, un stub est inclus dans le code compilé représentant le code de procédure distante.
Lorsque le programme est exécuté et que l'appel de procédure est émis, le stub reçoit la demande et la transmet à un programme d'exécution client sur l'ordinateur local. La première fois que le stub client est appelé, il contacte un serveur de noms pour déterminer l'adresse de transport où réside le serveur.
Le programme d'exécution client sait comment adresser l'ordinateur distant et l'application serveur et envoie le message sur le réseau qui demande la procédure distante. De même, le serveur comprend un programme d'exécution et un stub qui s'interfacent avec la procédure distante elle-même, et les protocoles de demande de réponse sont renvoyés de la même manière.
Caractéristiques du RPC
Dans un système d'exploitation, l'appel de procédure à distance (RPC) présente les fonctionnalités suivantes, telles que :
- RPC cache la complexité du processus de transmission des messages à l'utilisateur.
- RPC n'utilise que des couches spécifiques du modèle OSI comme la couche de transport.
- Les clients peuvent communiquer avec le serveur en utilisant des langages de niveau supérieur.
- RPC fonctionne bien avec les environnements locaux et distants.
- Le programme de RPC est écrit en code simple et est facilement compris par le programmeur.
- Le système d'exploitation peut gérer facilement les processus et les threads impliqués dans RPC.
- Le système d'exploitation cache les abstractions de RPC à l'utilisateur.
Comment fonctionne le RPC ?
Lorsqu'un appel de procédure distante est invoqué, l'environnement appelant est suspendu, les paramètres de procédure sont transférés via le réseau vers l'environnement dans lequel la procédure doit s'exécuter, et la procédure est ensuite exécutée dans cet environnement.
convention de dénomination de Java
Une fois la procédure terminée, les résultats sont retransférés vers l'environnement appelant, où l'exécution reprend comme si elle revenait d'un appel de procédure normal.
Un appel de procédure à distance (RPC) fonctionne selon les étapes suivantes dans un système d'exploitation :
Étape 1: Le client, le stub client et le runtime RPC s'exécutent sur la machine client.
Étape 2: Un client démarre un processus stub client en transmettant des paramètres de la manière habituelle. Le regroupement des paramètres de la procédure est appelé triage . Le stub du client est stocké dans le propre espace d'adressage du client et demande également au runtime RPC local de renvoyer le stub du serveur.
Étape 3: À ce stade, l'utilisateur peut accéder à RPC en effectuant un appel procédural local régulier. RPC Runtime gère la transmission des messages entre le réseau via le client et le serveur, et effectue également le travail de retransmission, d'accusé de réception, de routage et de cryptage.
Étape 4: Après avoir terminé la procédure du serveur, il retourne au stub du serveur, qui regroupe (rassemble) les valeurs de retour dans un message. Le stub du serveur renvoie ensuite un message à la couche de transport.
Étape 5 : Au cours de cette étape, la couche de transport renvoie le message de résultat à la couche de transport client, qui renvoie un message au stub client.
Étape 6 : À ce stade, le stub client décompresse (décompresse) les paramètres de retour dans le paquet résultant, et le processus d'exécution revient à l'appelant.
Problèmes liés à l'appel de procédure à distance (RPC)
Dans un système d'exploitation, l'appel de procédure distante ou RPC était confronté à certains problèmes qui doivent être résolus, tels que :
algorithme de Kruskal
1. Exécution RPC
Le système d'exécution RPC est une bibliothèque de routines et de services qui gèrent les communications réseau qui sous-tendent le mécanisme RPC. Au cours d'un appel RPC, le code des systèmes d'exécution côté client et côté serveur gère la liaison, établit des communications via un protocole approprié, transmet les données d'appel entre le client et le serveur et gère les erreurs de communication.
différence de dates dans Excel
2. Talon
La fonction du stub est d'assurer la transparence du code d'application écrit par le programmeur.
3. Reliure
Comment le client sait-il qui appeler et où réside le service ?
La solution la plus flexible consiste à utiliser la liaison dynamique et à rechercher le serveur au moment de l'exécution, lorsque le RPC est créé pour la première fois. La première fois que le stub client est appelé, il contacte un serveur de noms pour déterminer l'adresse de transport à laquelle réside le serveur. La reliure se compose de deux parties :
4. La sémantique d'appel associée à RPC
Il est principalement classé dans les choix suivants,
Caractéristiques du RPC
Voici les caractéristiques essentielles de l’appel de procédure distante :
- La procédure appelée se trouve dans un autre processus, susceptible de résider sur une autre machine.
- Les processus ne partagent pas d’espace d’adressage.
- Les paramètres sont transmis uniquement par des valeurs.
- RPC s'exécute dans l'environnement du processus serveur.
- Il n'offre pas d'accès à l'environnement de la procédure appelante.
Avantages du RPC
Voici quelques avantages ou bénéfices du RPC, tels que :
- La méthode RPC aide les clients à communiquer avec les serveurs par l'utilisation conventionnelle d'appels de procédure dans des langages de haut niveau.
- La méthode RPC est calquée sur l'appel de procédure locale, mais la procédure est plus susceptible d'être exécutée dans un processus différent et généralement sur un ordinateur différent.
- RPC prend en charge les modèles orientés processus et threads.
- RPC rend le mécanisme interne de transmission des messages caché à l'utilisateur.
- L'effort nécessaire pour réécrire et re-développer le code est minime.
- Les appels de procédure distante peuvent être utilisés pour la distribution et l'environnement local.
- Il engage de nombreuses couches de protocole pour améliorer les performances.
- RPC fournit l'abstraction. Par exemple, la nature de la transmission de messages de la communication réseau reste cachée à l'utilisateur.
- RPC permet l'utilisation des applications dans un environnement distribué qui n'est pas seulement dans l'environnement local.
- Avec le code RPC, les efforts de réécriture et de re-développement sont minimisés.
- Modèles orientés processus et orientés thread pris en charge par RPC.
Inconvénients du RPC
Voici quelques inconvénients ou inconvénients liés à l’utilisation de RPC, tels que :
- L’appel de procédure à distance transmet les paramètres uniquement par valeurs et valeurs de pointeur, ce qui n’est pas autorisé.
- Le temps d’appel (et de retour) d’une procédure distante (c’est-à-dire les frais généraux) peut être considérablement inférieur à celui d’une procédure locale.
- Ce mécanisme est très vulnérable aux pannes car il implique un système de communication, une autre machine et un autre processus.
- Le concept RPC peut être implémenté de différentes manières, ce qui n'est pas standard.
- N'offre aucune flexibilité dans RPC pour l'architecture matérielle car il est principalement basé sur l'interaction.
- Le coût du processus est augmenté en raison d'un appel de procédure à distance.