Protocole d'appel de procédure à distance (RPC) dans un système distribué

⚡ Résumé intelligent

L'appel de procédure distante (RPC) est un protocole de communication interprocessus qui permet à un programme d'exécuter une procédure dans un autre espace d'adressage ou une autre machine, masquant les détails du réseau derrière un appel de fonction local ordinaire dans les systèmes client-serveur distribués.

  • 📞 Définition: RPC permet à un client d'invoquer une procédure sur un serveur distant comme s'il s'agissait d'un appel local.
  • 🇧🇷 Types: Les RPC en mode Callback, Broadcast et Batch diffèrent dans la manière dont les requêtes sont acheminées et mises en file d'attente.
  • ???? Archi Cinq éléments coopèrent à chaque appel : le client, le stub client, l’environnement d’exécution RPC, le stub serveur et le serveur.
  • (I.e. Comment ça fonctionne Les stubs sérialisent les paramètres dans un message et désérialisent le résultat renvoyé à l'appelant.
  • Inconvénients : Les RPC simplifient le code distribué, mais augmentent la surcharge réseau et les points de défaillance par rapport aux appels locaux.
  • 🤖 Angle d'approche IA : gRPC permet de faire transiter des modèles d'apprentissage automatique entre microservices, et Copilot accélère l'écriture des stubs RPC.

Appel de procédure à distance (RPC) dans un système distribué

Qu'est-ce que le RPC ?

Appel de procédure à distance (RPC) est un communication interprocessus Technique utilisée dans les applications client-serveur. L'acronyme RPC signifie « Remote Procedure Call » (appel de procédure distante). Les mécanismes RPC sont utilisés lorsqu'un programme informatique exécute une procédure ou une sous-routine dans un espace d'adressage différent, de manière classique, sans que le programmeur n'ait à spécifier explicitement les détails de l'interaction distante.

Cet appel de procédure gère également les protocoles de transport de bas niveau, tels que UDP et TCP/IP, pour acheminer les données de message entre les programmes.

Types de RPC

Il existe trois types de RPC :

  • RPC de rappel
  • RPC de diffusion
  • RPC en mode batch

RPC de rappel

Ce type d'appel de procédure distante (RPC) permet une communication pair-à-pair (P2P) entre les processus participants. Il permet à un processus d'agir à la fois comme client et comme serveur.

Fonctions du rappel RPC :

  • Gère les problèmes d'applications interactives traités à distance.
  • Fournit au serveur le descripteur du client.
  • Le rappel fait patienter le processus client.
  • Gère les blocages de rappel.
  • Il facilite un modèle d'échange entre pairs entre les processus participants.

RPC de diffusion

Une requête RPC de diffusion est une requête client diffusée sur le réseau et traitée par tous les serveurs disposant de la méthode de traitement de cette requête.

Fonctions du RPC de diffusion :

  • Permet de spécifier que le message de requête 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.

RPC en mode batch

Le mode batch RPC permet de mettre en file d'attente des requêtes RPC distinctes dans une mémoire tampon de transmission côté client, puis de les envoyer par lot sur le réseau au serveur.

Fonctions du RPC en mode batch :

  • Cela minimise la surcharge liée à l'envoi d'une requête, car les requêtes sont envoyées par lot sur le réseau au serveur.
  • Ce type de protocole RPC n'est efficace que pour les applications nécessitant des taux d'appels plus faibles.
  • Il a besoin d’un protocole de transmission fiable.

RPC Architecture

L'architecture RPC comprend principalement cinq composants du programme :

  1. Projet
  2. Talon du client
  3. Exécution RPC
  4. Talon du serveur
  5. Server

RPC Architecture

RPC Architecture

Comment fonctionne le RPC ?

Les étapes suivantes se déroulent lors du processus RPC :

Étape 1) Le client, le stub client et une instance du runtime RPC s'exécutent sur la machine cliente.

Étape 2) Le client lance un processus stub client en lui passant les paramètres de manière classique. Ce stub est stocké dans l'espace d'adressage du client. Il demande également au runtime RPC local d'envoyer la requête au stub serveur.

Étape 3) À cette étape, l'utilisateur accède à l'appel de procédure locale (RPC) via un appel de procédure locale classique. Le runtime RPC gère la transmission des messages entre le client et le serveur sur le réseau. Il assure également la retransmission, l'accusé de réception, le routage et le chiffrement.

Étape 4) Une fois la procédure serveur terminée, l'exécution revient au stub serveur, qui encapsule (sérialise) les valeurs de retour dans un message. Le stub serveur renvoie ensuite ce message à la couche transport.

Étape 5) Dans cette étape, la couche transport renvoie le message de résultat à la couche transport client, qui le renvoie au stub client.

Étape 6) À cette étape, le stub client démarshale (décompresse) les paramètres de retour dans le paquet résultant, et l'exécution revient à l'appelant.

Caractéristiques du RPC

Voici les caractéristiques essentielles du RPC :

  • La procédure appelée se trouve dans un autre processus, qui réside probablement 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.

Caractéristiques du RPC

Voici les fonctionnalités importantes de RPC :

  • Syntaxe d'appel simple.
  • Offre une sémantique connue.
  • Fournit une interface bien définie.
  • Il peut permettre la communication entre des processus s'exécutant sur la même machine ou sur des machines différentes.

Avantages du RPC

Voici les avantages du RPC :

  • RPC permet aux clients de communiquer avec les serveurs grâce à l'utilisation classique des appels de procédure dans les langages de haut niveau.
  • L'appel de procédure distante (RPC) est calqué sur l'appel de procédure locale, mais la procédure appelée est très probablement 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 orientés threads.
  • RPC masque le mécanisme interne de transmission des messages à l'utilisateur.
  • Il engage de nombreuses couches de protocole pour améliorer les performances.
  • RPC fournit abstraction ; par exemple, la nature de transmission de messages de la communication réseau reste cachée à l'utilisateur.
  • RPC peut être utilisé dans des environnements distribués et locaux.
  • L'effort nécessaire pour réécrire et redévelopper le code est minime.

Inconvénients du RPC

Voici les inconvénients/inconvénients de l’utilisation de RPC :

  • L'appel de procédure distante transmet les paramètres uniquement par valeurs ; les valeurs de pointeur (référence) ne sont pas autorisées.
  • Le temps d'appel (et de retour) de procédure à distance — la surcharge — est nettement supérieur à celui d'une procédure locale.
  • Ce mécanisme est extrêmement vulnérable aux défaillances, car il implique un système de communication, une autre machine et un autre processus.
  • Le concept RPC peut être mis en œuvre de différentes manières, il n'existe donc pas de norme unique.
  • Il n'offre pas de flexibilité en matière d'architecture matérielle, car il est principalement basé sur l'interaction.
  • Le coût du processus augmente en raison de l'appel de procédure à distance.

FAQ

RPC expose les actions sous forme de procédures distantes, tandis que REST expose les données sous forme de ressources accessibles via des verbes HTTP. RPC s'apparente à l'appel d'une fonction locale ; REST est centré sur les ressources et l'état.

gRPC est GoogleLe framework RPC moderne et performant de . Il utilise HTTP/2 et le protocole Bufferet prend en charge le streaming bidirectionnel, ce qui le rend populaire pour la communication entre microservices.

Les appels RPC peuvent être synchrones et asynchrones. Un appel synchrone bloque le traitement jusqu'à ce que le serveur renvoie une réponse, tandis qu'un appel asynchrone renvoie une réponse immédiatement et la traite ultérieurement. Des frameworks comme gRPC prennent en charge les deux styles.

L'appel de procédure distante (RPC) est une forme de communication interprocessus (IPC) qui fonctionne entre des machines distinctes. Alors que de nombreuses méthodes IPC partagent la mémoire d'un même hôte, le RPC échange des messages via un réseau, permettant ainsi aux processus exécutés sur différents ordinateurs de coopérer.

Les implémentations RPC courantes incluent gRPC, Apache Thrift, XML-RPC, JSON-RPC et Java RMI. Elles diffèrent par le format et le transport des données, mais toutes permettent à un client d'appeler une procédure sur un serveur distant.

Les appels RPC ne sont pas sécurisés par défaut ; leur sécurité dépend du protocole de transport. Les implémentations ajoutent le chiffrement TLS, des jetons d’authentification et des contrôles d’accès pour protéger les appels.

Les plateformes d'apprentissage automatique utilisent RPC, notamment gRPC, pour diffuser les prédictions des modèles entre les microservices. Un client envoie des caractéristiques et reçoit un résultat d'inférence.ping Systèmes d'IA rapides et faiblement couplés.

Oui. GitHub Copilot peut générer les définitions de service .proto, les stubs clients et les gestionnaires de serveur pour gRPC. Les développeurs doivent néanmoins vérifier les interfaces générées, la gestion des erreurs et le versionnage avant le déploiement en production.

Résumez cet article avec :