logo

Remote Procedure Call (RPC) im Betriebssystem

Remoteprozeduraufruf (RPC) ist eine leistungsstarke Konstruktionstechnik verteilte, Client-Server-basierte Anwendungen . Es basiert auf der Erweiterung des herkömmlichen lokalen Prozeduraufrufs, sodass der Die aufgerufene Prozedur muss nicht im selben Adressraum wie die aufrufende Prozedur vorhanden sein . Die beiden Prozesse können sich auf demselben System oder auf unterschiedlichen Systemen befinden, die über ein Netzwerk miteinander verbunden sind.

Beim Tätigen eines Remoteprozeduraufrufs:



1. Die aufrufende Umgebung wird angehalten, die Prozedurparameter werden über das Netzwerk an die Umgebung übertragen, in der die Prozedur ausgeführt werden soll, und die Prozedur wird dort ausgeführt.

YouTube-Video vlc speichern

2. Wenn die Prozedur beendet ist und ihre Ergebnisse liefert, werden ihre Ergebnisse zurück an die aufrufende Umgebung übertragen, wo die Ausführung wie bei der Rückkehr von einem regulären Prozeduraufruf fortgesetzt wird.



HINWEIS: RPC eignet sich besonders gut für Client-Server (z. B. Anfrage-Antwort) Interaktion, in der der Kontrollfluss erfolgt wechselt zwischen Anrufer und Angerufenem . Vom Konzept her werden Client und Server nicht beide gleichzeitig ausgeführt. Stattdessen springt der Ausführungsthread vom Aufrufer zum Angerufenen und dann wieder zurück.

Funktionsweise von RPC



Gültige Java-Bezeichner

Die folgenden Schritte finden während eines RPC statt:

  1. Ein Client ruft a auf Client-Stub-Prozedur , wobei Parameter auf die übliche Weise übergeben werden. Der Client-Stub befindet sich im eigenen Adressraum des Clients.
  2. Der Client-Stub Marshalls(Rudel) die Parameter in eine Nachricht. Beim Marshalling wird die Darstellung der Parameter in ein Standardformat konvertiert und jeder Parameter in die Nachricht kopiert.
  3. Der Client-Stub übergibt die Nachricht an die Transportschicht, die sie an den Remote-Server-Rechner sendet.
  4. Auf dem Server leitet die Transportschicht die Nachricht an einen Server-Stub weiter, der demarshalls(auspacken) die Parameter und ruft die gewünschte Serverroutine mithilfe des regulären Prozeduraufrufmechanismus auf.
  5. Wenn die Serverprozedur abgeschlossen ist, kehrt sie zum Server-Stub zurück (z. B. über eine normale Prozeduraufrufrückgabe) , der die Rückgabewerte in einer Nachricht zusammenfasst. Der Server-Stub übergibt die Nachricht dann an die Transportschicht.
  6. Die Transportschicht sendet die Ergebnisnachricht zurück an die Client-Transportschicht, die die Nachricht an den Client-Stub zurückgibt.
  7. Der Client-Stub entmarshallt die Rückgabeparameter und die Ausführung kehrt zum Aufrufer zurück.

Wichtige Überlegungen zum Entwurf und zur Implementierung von RPC-Systemen sind:

    Sicherheit: Da RPC die Kommunikation über das Netzwerk beinhaltet, ist die Sicherheit ein wichtiges Anliegen. Um unbefugten Zugriff zu verhindern und sensible Daten zu schützen, müssen Maßnahmen wie Authentifizierung, Verschlüsselung und Autorisierung implementiert werden. Skalierbarkeit: Mit steigender Anzahl an Clients und Servern darf die Leistung des RPC-Systems nicht nachlassen. Lastausgleichstechniken und eine effiziente Ressourcennutzung sind wichtig für die Skalierbarkeit. Fehlertoleranz: Das RPC-System sollte gegenüber Netzwerkausfällen, Serverabstürzen und anderen unerwarteten Ereignissen widerstandsfähig sein. Maßnahmen wie Redundanz, Failover und Graceful Degradation können zur Gewährleistung der Fehlertoleranz beitragen. Standardisierung: Es stehen mehrere RPC-Frameworks und -Protokolle zur Verfügung. Es ist wichtig, ein standardisiertes und weithin akzeptiertes zu wählen, um Interoperabilität und Kompatibilität zwischen verschiedenen Plattformen und Programmiersprachen sicherzustellen. Leistungsoptimierung: Die Feinabstimmung des RPC-Systems für optimale Leistung ist wichtig. Dies kann die Optimierung des Netzwerkprotokolls, die Minimierung der über das Netzwerk übertragenen Daten sowie die Reduzierung der mit RPC-Aufrufen verbundenen Latenz und Overhead umfassen.

RPC-PROBLEME :
Probleme, die angegangen werden müssen:

1. RPC-Laufzeit:
Das RPC-Laufzeitsystem ist eine Bibliothek von Routinen und einer Reihe von Diensten, die die Netzwerkkommunikation verarbeiten, die dem RPC-Mechanismus zugrunde liegt. Im Verlauf eines RPC-Aufrufs verarbeiten clientseitige und serverseitige Laufzeitsysteme den Code Bindung herstellen, Kommunikation über ein geeignetes Protokoll herstellen, Anrufdaten zwischen Client und Server weiterleiten und Kommunikationsfehler behandeln.

2. Stub:
Die Funktion des Stubs besteht darin Bietet Transparenz für den vom Programmierer geschriebenen Anwendungscode .

    Auf der Clientseite verwaltet der Stub die Schnittstelle zwischen dem lokalen Prozeduraufruf des Clients und dem Laufzeitsystem, indem er Daten marshallt und unmarshallt, das RPC-Laufzeitprotokoll aufruft und bei Bedarf einige der Bindungsschritte ausführt. Auf der Serverseite stellt der Stub eine ähnliche Schnittstelle zwischen dem Laufzeitsystem und den lokalen Managerprozeduren bereit, die vom Server ausgeführt werden.

3. Bindung: Woher weiß der Kunde, wen er anrufen muss und wo sich der Dienst befindet?
Die flexibelste Lösung besteht darin, eine dynamische Bindung zu verwenden und den Server zur Laufzeit zu finden, wenn der RPC zum ersten Mal erstellt wird. Wenn der Client-Stub zum ersten Mal aufgerufen wird, kontaktiert er einen Nameserver, um die Transportadresse zu ermitteln, an der sich der Server befindet.

Die Bindung besteht aus zwei Teilen:

C#-Tutorial
  • Wir:
  • Standort:
    Ein Server, der einen Dienst anbietet, exportiert eine Schnittstelle dafür. Beim Exportieren einer Schnittstelle wird diese beim System registriert, sodass Clients sie verwenden können. Ein Client muss eine (exportierte) Schnittstelle importieren, bevor die Kommunikation beginnen kann.

4. Die mit RPC verbundene Aufrufsemantik:
Es wird hauptsächlich in die folgenden Optionen eingeteilt:

    Nachricht zur Wiederholungsanforderung –
    Gibt an, ob das Senden einer Anforderungsnachricht erneut versucht werden soll, wenn ein Server ausgefallen ist oder der Empfänger die Nachricht nicht erhalten hat. Doppelte Filterung –
    Entfernen Sie die doppelten Serveranforderungen. Weiterleitung der Ergebnisse –
    Um verlorene Nachrichten erneut zu senden, ohne die Vorgänge auf der Serverseite erneut auszuführen.

VORTEILE :

  1. RPC bietet ABSTRAKTION d. h. der Nachrichtenübermittlungscharakter der Netzwerkkommunikation bleibt dem Benutzer verborgen.
  2. RPC lässt häufig viele Protokollschichten weg, um die Leistung zu verbessern. Selbst eine kleine Leistungsverbesserung ist wichtig, da ein Programm möglicherweise häufig RPCs aufruft.
  3. RPC ermöglicht die Nutzung der Anwendungen in der verteilten Umgebung, nicht nur in der lokalen Umgebung.
  4. Mit RPC-Code wird der Aufwand für das Neuschreiben/Neuentwickeln minimiert.
  5. Von RPC unterstützte prozessorientierte und threadorientierte Modelle.

Verweise: