Appel de procédure à distance (RPC) est une technique puissante pour construire applications distribuées basées sur client-serveur . Elle repose sur l'extension de la procédure locale conventionnelle d'appel afin que le la procédure appelée n'a pas besoin d'exister dans le même espace d'adressage que la procédure appelante . Les deux processus peuvent se trouver sur le même système ou sur des systèmes différents avec un réseau les connectant.
Lors d'un appel de procédure à distance :

1. 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.
liste des états
2. Lorsque la procédure se termine et produit ses résultats, ceux-ci sont retransférés 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é au client-serveur (par exemple requête-réponse) interaction 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 tous les deux en même temps. Au lieu de cela, le fil d'exécution passe de l'appelant à l'appelé, puis revient.
Fonctionnement du RPC

Les étapes suivantes se déroulent lors d'un RPC :
- Un client invoque un procédure de talon de client , en passant les paramètres de la manière habituelle. Le stub client réside dans le propre espace d’adressage du client.
- Le talon du client marshalls (pack) les paramètres dans un message. Le marshalling comprend la conversion de la représentation des paramètres dans un format standard et la copie de chaque paramètre dans le message.
- Le stub client transmet le message à la couche de transport, qui l'envoie au serveur distant.
- Sur le serveur, la couche transport transmet le message à un stub de serveur, qui démarshalls (déballer) les paramètres et appelle la routine serveur souhaitée en utilisant le mécanisme d'appel de procédure régulier.
- Une fois la procédure serveur terminée, elle revient au stub du serveur (par exemple, via un retour d'appel de procédure normale) , qui rassemble les valeurs de retour dans un message. Le stub du serveur transmet ensuite le message à la couche de transport.
- La couche transport renvoie le message de résultat à la couche transport client, qui renvoie le message au stub client.
- Le stub client répertorie les paramètres de retour et l'exécution revient à l'appelant.
Les considérations clés pour la conception et la mise en œuvre de systèmes RPC sont :
- Sécurité : étant donné que RPC implique une communication sur le réseau, la sécurité est une préoccupation majeure. Des mesures telles que l'authentification, le cryptage et l'autorisation doivent être mises en œuvre pour empêcher tout accès non autorisé et protéger les données sensibles. Évolutivité : à mesure que le nombre de clients et de serveurs augmente, les performances du système RPC ne doivent pas se dégrader. Les techniques d’équilibrage de charge et l’utilisation efficace des ressources sont importantes pour l’évolutivité. Tolérance aux pannes : le système RPC doit être résilient aux pannes de réseau, aux pannes de serveur et à d'autres événements inattendus. Des mesures telles que la redondance, le basculement et la dégradation progressive peuvent contribuer à garantir la tolérance aux pannes. Standardisation : il existe plusieurs cadres et protocoles RPC disponibles, et il est important d'en choisir un standardisé et largement accepté pour garantir l'interopérabilité et la compatibilité entre les différentes plates-formes et langages de programmation. Optimisation des performances : il est important d'affiner le système RPC pour obtenir des performances optimales. Cela peut impliquer d'optimiser le protocole réseau, de minimiser les données transférées sur le réseau et de réduire la latence et la surcharge associées aux appels RPC.
PROBLEMES RPC :
Problèmes à résoudre :
js remplacement
1. Exécution RPC :
Le système d'exécution RPC est une bibliothèque de routines et un ensemble 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 liaison, établir des communications via un protocole approprié, transmettre les données d'appel entre le client et le serveur et gérer les erreurs de communication.
2. Talon :
La fonction du stub est de assurer la transparence du code d'application écrit par le programmeur .
- Côté client, le stub gère l'interface entre l'appel de procédure locale du client et le système d'exécution, marshalling et unmarshalling les données, invoquant le protocole d'exécution RPC et, si demandé, exécutant certaines des étapes de liaison. Côté serveur, le stub fournit une interface similaire entre le système d'exécution et les procédures du gestionnaire local exécutées par le serveur.
3. Liaison : 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 :
- Nous:
- Localisation :
- Un serveur ayant un service à proposer exporte une interface pour celui-ci. L'exportation d'une interface l'enregistre auprès du système afin que les clients puissent l'utiliser. Un client doit importer une interface (exportée) avant que la communication puisse commencer.
4. La sémantique des appels associée à RPC :
Il est principalement classé dans les choix suivants :
- Message de demande de nouvelle tentative –
S'il faut réessayer d'envoyer un message de demande lorsqu'un serveur est en panne ou que le destinataire n'a pas reçu le message. Filtrage en double –
Supprimez les demandes de serveur en double. Retransmission des résultats –
Pour renvoyer les messages perdus sans réexécuter les opérations côté serveur.
AVANTAGES :
type de date dactylographié
- RPC fournit ABSTRACTION c'est-à-dire que la nature de la transmission de messages de la communication réseau est cachée à l'utilisateur.
- RPC omet souvent de nombreuses couches de protocole pour améliorer les performances. Même une légère amélioration des performances est importante car un programme peut souvent appeler des RPC.
- RPC permet l'utilisation des applications dans l'environnement distribué, pas seulement dans l'environnement local.
- Avec RPC, les efforts de réécriture/redéveloppement du code sont minimisés.
- Modèles orientés processus et orientés thread pris en charge par RPC.
Les références:
- https://web.cs.wpi.edu/~cs4514/b98/week8-rpc/week8-rpc.html
- https://users.cs.cf.ac.uk/Dave.Marshall/C/node33.html
- Réseaux Informatiques : Une Approche Top – Down par FOROUZAN