4 - Verteilte Systeme [ID:11006]
50 von 732 angezeigt

Die Türen sind noch offen, oder? Ich komme ja noch ein paar. Wir hatten uns das letzte Mal über

Interprozesskommunikationsmechanismen unterhalten und ich will mal so die paar ganz wesentlichen

Geschichten, um die es ging, noch mal kurz rausgreifen. Also es ging um die Frage, welche Art von

Botschaftenaustausch haben, sind sie synchron oder asynchron, puffern wir oder puffern wir nicht,

blockiert, blockieren wir, also warten wir drauf letztendlich oder warten wir nicht, was ein ganzes

Stück weit natürlich mit Synchronität oder Asynchronität korrespondiert und ist die

Datenübertragung oder die Botschaftsübertragung zuverlässig oder unzuverlässig. Und abhängig

davon gibt es natürlich die unterschiedlichsten Semantiken, die man für Interprozesskommunikation

definieren kann und die Frage natürlich auch, wie geht man mit Zustellungsfehlern um und welche

Semantiken ergeben sich auch da wieder draus. Gut und dann hatten wir noch über die verschiedenen

Kommunikationsendpunkte gesprochen, also mit wem kommunizieren wir eigentlich. Vielleicht

mal so die paar wesentlichen Bilder davon noch mal rausgegriffen. Gut einerseits die Frage Synchrone

Kommunikation, bei Synchrone Kommunikation, dass wir uns letztendlich blockieren. Einerseits

darauf, dass jemand die Nachricht annimmt. Auf der anderen Seite auch als Nachrichtenempfänger uns

darauf blockieren können, dass jemand die Nachricht absendet, also je nachdem wer eben zuerst dran ist.

Während bei der Asynchronen Kommunikation letztendlich ein Puffermechanismus in der Mitte,

der die Nachricht entgegennimmt und Sender und Empfänger können eigentlich erstmal

unabhängig voneinander arbeiten. Der Empfänger natürlich auch nur, kann nur in der Situation

weiterarbeiten, dass er im Puffer natürlich schon eine Nachricht vorfindet. Aber er muss

nicht darauf warten, dass der Sender genau in dem Augenblick eben was lossendet.

So, dann zentrales Thema waren die verschiedenen Interprozesskommunikationssemanitiken. Ich denke,

die sind in diesem einen Bild ganz gut zusammengefasst. Also einerseits die Frage immer,

wie lange blockieren wir eigentlich, wie lange warten wir, wenn wir kommunizieren,

warten wir nur so lange, bis wir die Nachricht im Endeffekt hier im lokalen Betriebssystem

losgeworden sind und es ist uns egal, was dann danach passiert oder warten wir so lange,

bis wir, bis die Nachricht im Kommunikationsmedium zumindest angekommen ist, also bis der lokale

Rechner sie losgeschickt hat, dass wir das blocking send, das reliable blocking send,

warten wir zumindest so lange, bis auch beim Empfänger die Nachricht angekommen ist, also

auf dem Empfangsrechner oder sogar das synchronisation send, warten wir so lange,

bis beim eigentlichen, tatsächlichen Empfänger, also nicht nur auf dem Rechner, sondern beim

Adressaten die Nachricht angekommen ist und schließlich das remote invocation send,

warten wir auch noch darauf, dass eine Antwort zurückgekommen ist. Also diese Abstufungen

gibt es letztendlich und je nachdem, was man erreichen will, kann man eben die eine oder

andere Variante eben dann einsetzen und wir werden das dann auch noch sehen, wie das in der Praxis

dann aussieht. Gut, dann die Fragestellung natürlich mit Fehlern. Wie geht man mit Fehlern um? Es können

die Fehler an unterschiedlichster Stelle passieren, beim Absenden der Nachricht kann der Fehler

passieren, er kann beim Senden der Antwort passieren, es kann auch gar keiner passieren

und der oder eigentlich keiner passieren und der Sender ist nur zu ungeduldig und sein Timeout,

den er sich aufzieht, bis er den Request wiederholt, ist einfach zu kurz gewählt und

dann kommt die Nachricht an und dann eben die Fragestellung einerseits. Wie geht, was identisch

ist zu der Fragestellung, wenn der Reply verloren geht, wie geht der Server damit um, dass der gleiche

Request zweimal gekommen ist und in diesem Fall zusätzlich noch die Frage, wie geht der Client

damit um, dass die Antwort dann zweimal eintrifft. Ich meine, im Endeffekt, es schickt hier die

Wiederholung los und kann eigentlich jetzt nicht so richtig erkennen, ob diese Antwort hier bereits

die auf diesen Request ist oder ob diese Antwort hier quasi die Antwort zum ersten Request ist,

also das kriegt er nicht auseinander, das heißt, er muss im Endeffekt hier, wenn die zweite Antwort

kommt, einfach zu erkennen, das ist eine wiederholte Antwort und die halt irgendwie verwerfen. Während

natürlich auf der Serverseite der Mechanismus komplexer ist, wenn die Nachricht bearbeitet wurde

und die Antwort geschickt wurde, muss letztendlich diese Antwort aufgehoben werden und im Zweifelsfall

eben nochmal wiederholt werden. Gut, ja und dann hatten wir über die verschiedenen Kommunikationsendpunkte

Teil einer Videoserie :

Zugänglich über

Offener Zugang

Dauer

01:22:43 Min

Aufnahmedatum

2012-05-15

Hochgeladen am

2019-05-08 08:39: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