RPC-Protokoll (Remote Procedure Call) in einem verteilten System

โšก Intelligente Zusammenfassung

Remote Procedure Call (RPC) ist ein Interprozesskommunikationsprotokoll, das es einem Programm ermรถglicht, eine Prozedur in einem anderen Adressraum oder auf einer anderen Maschine auszufรผhren und dabei Netzwerkdetails hinter einem gewรถhnlichen lokalen Funktionsaufruf in verteilten Client-Server-Systemen zu verbergen.

  • ๐Ÿ“ž Definition: RPC ermรถglicht es einem Client, eine Prozedur auf einem entfernten Server so aufzurufen, als wรคre es ein lokaler Aufruf.
  • ๐Ÿ—‚๏ธ Arten: Callback-, Broadcast- und Batch-Modus-RPC unterscheiden sich darin, wie Anfragen weitergeleitet und in die Warteschlange gestellt werden.
  • ???? ๏ธ ArchiStruktur: Bei jedem Aufruf arbeiten fรผnf Komponenten zusammen: Client, Client-Stub, RPC-Laufzeitumgebung, Server-Stub und Server.
  • ๐Ÿ”„ So funktioniert es: Stubs wandeln Parameter in eine Nachricht um und geben das Ergebnis an den Aufrufer zurรผck.
  • ๏ธ Nachteile: RPC vereinfacht verteilten Code, fรผhrt aber im Vergleich zu lokalen Aufrufen zu zusรคtzlichem Netzwerk-Overhead und mehr Fehlerquellen.
  • ๐Ÿค– KI-Perspektive: gRPC stellt Machine-Learning-Modelle zwischen Microservices bereit, und Copilot beschleunigt das Schreiben von RPC-Stubs.

Remote Procedure Call (RPC) in verteilten Systemen

Was ist RPC?

Remoteprozeduraufruf (RPC) ist ein Interprozesskommunikation Eine Technik, die in Client-Server-Anwendungen verwendet wird. RPC steht fรผr Remote Procedure Call (Fernaufruf einer Prozedur). RPC-Mechanismen kommen zum Einsatz, wenn ein Computerprogramm eine Prozedur oder Subroutine in einem anderen Adressraum ausfรผhrt. Dies geschieht durch einen normalen Prozeduraufruf, ohne dass der Programmierer die Details der Ferninteraktion explizit codieren muss.

Dieser Prozeduraufruf verwaltet auch die Transportprotokolle auf niedriger Ebene, wie UDP und TCP/IP, um die Nachrichtendaten zwischen den Programmen zu รผbertragen.

Arten von RPC

Drei Arten von RPC sind:

  • Rรผckruf-RPC
  • Broadcast-RPC
  • RPC im Batch-Modus

Rรผckruf-RPC

Diese Art von RPC ermรถglicht ein Peer-to-Peer-Paradigma (P2P) zwischen den beteiligten Prozessen. Sie hilft einem Prozess, sowohl als Client als auch als Server zu fungieren.

Funktionen von Callback RPC:

  • Behebt Probleme, die von der Ferne verarbeitet werden und bei denen es sich um interaktive Anwendungen handelt.
  • รœbermittelt dem Server das Client-Handle.
  • Der Callback fรผhrt zu einer Wartezeit fรผr den Clientprozess.
  • Verwaltet Callback-Deadlocks.
  • Es ermรถglicht ein Peer-to-Peer-Paradigma zwischen den beteiligten Prozessen.

Broadcast-RPC

Broadcast-RPC ist eine Client-Anfrage, die im Netzwerk verbreitet und von allen Servern verarbeitet wird, die รผber die entsprechende Methode zur Verarbeitung dieser Anfrage verfรผgen.

Funktionen von Broadcast RPC:

  • Ermรถglicht es Ihnen festzulegen, dass die Anforderungsnachricht des Clients per Broadcast gesendet werden muss.
  • Sie kรถnnen Broadcast-Ports deklarieren.
  • Es trรคgt dazu bei, die Belastung des physischen Netzwerks zu reduzieren.

RPC im Batch-Modus

Der Batch-Modus von RPC hilft dabei, einzelne RPC-Anfragen in einem รœbertragungspuffer auf Clientseite zu speichern und sie dann als einen Batch รผber das Netzwerk an den Server zu senden.

Funktionen des Batch-Modus-RPC:

  • Dadurch wird der Aufwand fรผr das Senden einer Anfrage minimiert, da die Anfragen in einem Batch รผber das Netzwerk an den Server gesendet werden.
  • Diese Art von RPC-Protokoll ist nur fรผr Anwendungen effizient, die eine geringere Aufrufrate benรถtigen.
  • Es benรถtigt ein zuverlรคssiges รœbertragungsprotokoll.

RPC Architektur

Die RPC-Architektur besteht hauptsรคchlich aus fรผnf Programmkomponenten:

  1. Kunden
  2. Client-Stub
  3. RPC-Laufzeit
  4. Server-Stub
  5. Server

RPC Architektur

RPC Architektur

Wie funktioniert RPC?

Wรคhrend des RPC-Prozesses finden folgende Schritte statt:

Schritt 1) Der Client, der Client-Stub und eine Instanz der RPC-Laufzeitumgebung werden auf dem Client-Rechner ausgefรผhrt.

Schritt 2) Der Client startet einen Client-Stub-Prozess, indem er Parameter auf รผbliche Weise รผbergibt. Der Client-Stub wird im eigenen Adressraum des Clients gespeichert. Er fordert auรŸerdem die lokale RPC-Laufzeitumgebung auf, die Anfrage an den Server-Stub zu senden.

Schritt 3) In dieser Phase greift der Benutzer รผber einen regulรคren lokalen Prozeduraufruf auf RPC zu. Die RPC-Laufzeitumgebung verwaltet die รœbertragung von Nachrichten zwischen Client und Server รผber das Netzwerk. Sie รผbernimmt auรŸerdem die Weiterleitung, Bestรคtigung, das Routing und die Verschlรผsselung.

Schritt 4) Nach Abschluss der Serverprozedur kehrt die Ausfรผhrung zum Server-Stub zurรผck, der die Rรผckgabewerte in eine Nachricht verpackt (marshalisiert). Der Server-Stub sendet die Nachricht dann an die Transportschicht zurรผck.

Schritt 5) In diesem Schritt sendet die Transportschicht die Ergebnisnachricht zurรผck an die Client-Transportschicht, die die Nachricht an den Client-Stub zurรผckgibt.

Schritt 6) In dieser Phase demarshalt (entpackt) der Client-Stub die Rรผckgabeparameter im resultierenden Paket, und die Ausfรผhrung kehrt zum Aufrufer zurรผck.

Eigenschaften von RPC

Hier sind die wesentlichen Merkmale von RPC:

  • Die aufgerufene Prozedur ist Teil eines anderen Prozesses, der sich wahrscheinlich auf einem anderen Rechner befindet.
  • Die Prozesse teilen sich keinen Adressraum.
  • Parameter werden nur von Werten รผbergeben.
  • RPC wird in der Umgebung des Serverprozesses ausgefรผhrt.
  • Es bietet keinen Zugriff auf die Umgebung des aufrufenden Vorgangs.

Funktionen von RPC

Hier sind die wichtigen Funktionen von RPC:

  • Einfache Aufrufsyntax.
  • Bietet bekannte Semantik.
  • Bietet eine klar definierte Schnittstelle.
  • Es kann zwischen Prozessen auf derselben oder auf verschiedenen Maschinen kommunizieren.

Vorteile von RPC

Hier sind die Vorteile von RPC:

  • RPC ermรถglicht Clients die Kommunikation mit Servern durch die herkรถmmliche Verwendung von Prozeduraufrufen in hรถheren Programmiersprachen.
  • RPC ist dem lokalen Prozeduraufruf nachempfunden, die aufgerufene Prozedur wird jedoch hรถchstwahrscheinlich in einem anderen Prozess und in der Regel auf einem anderen Computer ausgefรผhrt.
  • RPC unterstรผtzt prozessorientierte und threadorientierte Modelle.
  • RPC verbirgt den internen Nachrichtenรผbermittlungsmechanismus vor dem Benutzer.
  • Es verpflichtet viele der Protokollschichten, um die Leistung zu verbessern.
  • RPC bietet absolutetraction; zum Beispiel bleibt der Nachrichtenaustauschcharakter der Netzwerkkommunikation fรผr den Benutzer verborgen.
  • RPC kann sowohl in verteilten als auch in lokalen Umgebungen eingesetzt werden.
  • Der Aufwand, den Code neu zu schreiben und weiterzuentwickeln, ist minimal.

Nachteile von RPC

Hier sind die Vor- und Nachteile der Verwendung von RPC:

  • Remote Procedure Calls (RPC) รผbergeben Parameter ausschlieรŸlich als Werte; Zeigerwerte (Referenzwerte) sind nicht zulรคssig.
  • Die Zeit fรผr einen Remote Procedure Call (und die Rรผckkehr) โ€“ der damit verbundene Aufwand โ€“ ist deutlich hรถher als bei einer lokalen Prozedur.
  • Dieser Mechanismus ist sehr anfรคllig fรผr Ausfรคlle, da er ein Kommunikationssystem, eine weitere Maschine und einen weiteren Prozess umfasst.
  • Das RPC-Konzept kann auf verschiedene Weisen implementiert werden, daher gibt es keinen einheitlichen Standard.
  • Es bietet keine Flexibilitรคt hinsichtlich der Hardwarearchitektur, da es hauptsรคchlich auf Interaktion basiert.
  • Die Kosten des Prozesses erhรถhen sich aufgrund des Remote Procedure Calls.

Hรคufig gestellte Fragen

RPC stellt Aktionen als entfernte Prozeduren bereit, wรคhrend REST Daten als Ressourcen bereitstellt, auf die รผber HTTP-Verben zugegriffen wird. RPC fรผhlt sich an wie der Aufruf einer lokalen Funktion; REST konzentriert sich auf Ressourcen und Zustรคnde.

gRPC ist GoogleDas moderne, leistungsstarke RPC-Framework verwendet HTTP/2 und das Protokoll. Buffers und unterstรผtzt bidirektionales Streaming, was es fรผr die Kommunikation mit Microservices beliebt macht.

RPC kann beides sein. Ein synchroner Aufruf blockiert, bis der Server ein Ergebnis liefert, wรคhrend ein asynchroner Aufruf sofort zurรผckkehrt und die Antwort spรคter verarbeitet. Frameworks wie gRPC unterstรผtzen beide Varianten.

RPC ist eine Form der IPC, die รผber verschiedene Rechner hinweg funktioniert. Wรคhrend viele IPC-Methoden den Speicher auf einem Host gemeinsam nutzen, tauscht RPC Nachrichten รผber ein Netzwerk aus, sodass Prozesse auf verschiedenen Computern zusammenarbeiten kรถnnen.

Gรคngige RPC-Implementierungen sind gRPC, Apache Thrift, XML-RPC, JSON-RPC und Java RMI. Sie unterscheiden sich im Datenformat und im Transportmechanismus, ermรถglichen aber alle einem Client den Aufruf einer Prozedur auf einem entfernten Server.

RPC ist standardmรครŸig nicht sicher; die Sicherheit hรคngt vom Transportprotokoll ab. Implementierungen fรผgen TLS-Verschlรผsselung, Authentifizierungstoken und Zugriffskontrollen hinzu, um die Aufrufe zu schรผtzen.

Plattformen fรผr maschinelles Lernen nutzen RPC, insbesondere gRPC, um Modellvorhersagen zwischen Microservices auszutauschen. Ein Client sendet Merkmale und empfรคngt ein Inferenzergebnis.ping KI-Systeme sind schnell und lose gekoppelt.

Ja. GitHub Copilot kann .proto-Dienstdefinitionen, Client-Stubs und Server-Handler fรผr gRPC generieren. Entwickler sollten jedoch die generierten Schnittstellen, die Fehlerbehandlung und die Versionsverwaltung vor der Bereitstellung in der Produktionsumgebung รผberprรผfen.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: