6 - Verteilte Systeme [ID:11008]
50 von 944 angezeigt

Der Unterschied zwischen Fernaufrufen und normalen Aufrufen ist natürlich, dass Fernaufrufe

deutlich fehleranfälliger als konventionelle Prozeduraufrufe sind.

Damit haben wir uns am Ende der letzten Vorlesung beschäftigt.

Der Situation, dass das verteilte System ein ganz anderes Fehlermodell hat.

Die Basis für Mechanismen, um Fehler- Toleranz-Maßnahmen durchführen zu können, sind diese Request-Reply-Protokolle

mit den verschiedenen Möglichkeiten.

Wir können also entweder die Anforderungsnachricht wiederholen, also mit Request-Replay-3 machen,

solange bis eine Antwort eintrifft oder wir davon ausgehen müssen, dass der Anbieter

ausgefallen ist.

Der zweite Mechanismus ist die Filterung von Aufforderungsduplikaten, wenn eine Aufforderung

bereits empfangen wurde und noch in Arbeit ist.

Das dritte wäre die Wiederholung der Antwortnachricht, wenn eine weitere Aufforderung eintrifft,

dass man dann die Antwortnachricht wiederholt oder dass man sie auch regelmäßig wiederholt,

bis die nächste Anforderung oder eine Bestätigung eintrifft.

Daraus kann man verschiedene Aufruf-Semantiken bauen.

Die drei am meisten verwendeten Semantiken sind die May-be-Semantik, die At-least-once-Semantik

und die At-most-once-Semantik.

Die May-be-Semantik ist eine Semantik, die man in der… ich überlege jetzt gerade im

Moment… das habe ich am Ende von der letzten Vorlesung nicht mehr gemacht.

Also irgendwie… okay gut, dann.

Ich habe mich jetzt so daran erinnert, diese Semantiken, die kommen auch irgendwo, die

kommen natürlich auch bei diesen Aufrufen, tauchen letztendlich auch auf.

Das wiederholt sich ja so ein Stückchen zwischen den Remote-Positor-Core-Semantiken und deswegen

war ich mir jetzt ein bisschen unsicher.

Also May-be-Semantik heißt letztendlich, es kann sein, dass der Aufruf ausgeführt

wurde oder vielleicht auch nicht.

Der Aufrufer weiß letztendlich im Fehlerfall eben nicht, ob überhaupt was passiert ist.

Kann man sich natürlich sagen, macht es überhaupt Sinn, diese mit so einer Semantik zu arbeiten,

aber gerade wenn es darum geht, irgendwelche Informationsdienste zu bauen, die regelmäßig

irgendwelche Informationen weiter schicken oder regelmäßig Informationen abfragen,

kann es durchaus Situationen geben, wo es einfach egal ist.

Dann passiert der nächste Aufruf halt in einer halben Minute oder ein paar Sekunden später

und dann geht halt der gut und zwischendrin ist vielleicht auch mal einer verloren gegangen.

Das ist dann egal.

Ist aber natürlich nur in ganz speziellen Anwendungsfällen einsetzbar.

Wesentlich weiterverwendbar ist die At-least-one-Semantik.

Heißt letztendlich, dass mindestens einmal der Aufruf ausgeführt wird, aber eine mehrfache

Ausführung möglich ist.

An dieser Stelle wartet der Client eine gewisse Zeitspanne und wenn nach dieser Zeitspanne

die Antwort nicht eingetreten ist, dann wird einfach der Aufruf wiederholt.

Und die maximale Anzahl der Wiederholungen kann begrenzt sein, muss aber nicht begrenzt

sein.

Man könnte also sagen, nach dieser gewissen Anzahl tritt eine Ausnahmesituation ein,

aber es gibt durchaus Systeme, die an der Stelle letztendlich beliebig oft wiederholen.

Also gerade wenn man jetzt zum Beispiel das Network-File-System ansieht, der Remote Procedure

Call Mechanismus, der dem NFS zugrunde liegt, arbeitet letztendlich mit so einer At-least-one-Semantik

und da ist es typischerweise so, wenn der Server ausfällt, dann wiederholt der Client

halt einfach so lange, bis er eine Antwort bekommt und ansonsten hängt er halt derweil.

Das ist insofern eine ganz angenehme Vorgehensweise, weil man da relativ schön mit Server-Ausfällen

auch klar kommt.

Teil einer Videoserie :

Zugänglich über

Offener Zugang

Dauer

01:18:30 Min

Aufnahmedatum

2012-06-05

Hochgeladen am

2019-05-08 05:09:02

Sprache

de-DE

  • Übersicht und Grundlagen verteilter Systeme
  • Verteilte Programmierung, Client/Server-Konzept

  • Kommunikation, Prozesse, Namensgebung

  • Koordinierung, Konsistenzwahrung

  • Grundlagen verteilter Algorithmen

  • Zeit in verteilten Systemen (logische Uhren, NTP)

  • Java, weiterführende Konzepte (z.B. Threads, Reflections)

  • Sun RPC, Java RMI

  • Dynamische Erzeugung von Proxies, Callback

Lernziele und Kompetenzen:

Die Studierenden

  • erwerben fundierte Kenntnisse über Grundlagen von verteilten Systemen

  • verstehen Zusammenhänge, die die verteilte Ausführung von Programmen in vernetzten Rechensystemen ermöglichen

  • erlernen die verteilte Programmierung in Java

  • entwickeln eine Middleware-Plattform zur Ausführung verteilter Programme

Einbetten
Wordpress FAU Plugin
iFrame
Teilen