Left Up Right Arbeitsgruppe Verteilte Systeme

Remote Procedure-Call

Grundvorstellungen


(aus Digital-Unix-Dokumentation)

RPC-Semantik

Ein Aufruf wird ausgeführt ...
exactly once (genau einmal)
das ist die ideale Vorstellung, die beim lokalen Prozeduraufruf immer erreicht wird. RPC-Implementierung nicht möglich.
last one (die letzte), Ergebnis des letzten Aufrufs
ideale Semantik im Fehlerfall
Problem: verwaiste Prozeduraufrufe können noch Effekte ausführen
at mostly once (höchstens einmal)
Beim Aufruf wird eine ID mitgegeben, so daß der Server doppel Aufrufe verhindern kann.
at least once (mindestens einmal)
auch bei unzuverlässiger Verbindung möglich: Solange wiederholen, bis erfolgreiche Rückmeldung. Allerdings kann der Aufruf auch mehrfach anfgerufen worden sein.

Idempotente Operationen erforderlich: Mehrfache Aufrufe müssen den gleichen Effekt haben:
Beispiel: pread(2) und pwrite(2) (lesen bzw. schreiben bei festem offset.
Gegenbeispiel: add(betrag)

last of many (letzte von vielen)
Funktioniert nicht transitiv über mehrere Maschinen hinweg

Problem: verwaiste Prozeduraufrufe (orphan termination)

Szenario:
 A           B             C
 |-----------
             |             
             --------------
                          |
          CRASH           |
oder:
Netzpartitionierung: Netzwerkverbindung fällt aus

Lösung:

Timeout
Zeitschranken für Ausführung
Epochen
Jede Inkarnation bekommt eine Nummer. Bei neuer Epoche werden die Aufrufe aus einer anderen Epoche terminiert

RFCs

Manual

Remote Procedure Call Programming Guide von FreeBSD
Linux RPC Programmierung HOWTO

Links

Bemerkungen

Heute sollte man CORBA nehmen...
Informatik- und Netzwerkverein Ravensburg e.V