AVS
Anwendung verteilter Systeme
Anwendung verteilter Systeme
-
- 1 / 123
-
Lernkarten
Kann das Send-and-Wait-Protokoll alle Arten von Paket-Verlusten feststellen und erfolgreich behandeln? Falls nicht, was bedeutet dies für Verteilte Applikationen?
Verluste und Duplizierung von Nachrichten
Welche Möglichkeiten der Behandlung bestehen, wenn der Verlust eines send()-Requests auftritt? Welche Arten von RPC-Semantik können prinzipiell realisiert werden?
Exception werfen
Stub
Die Möglichkeit von Dubletten von Paketen kann dazu führen, dass modifizierende Operationen doppelt ausgeführt werden. Wie lässt sich dies verhindern?
Kompensationstransaktion
Aufgrund von Ausfällen von Systemen kann es beim RPC zu Waisen kommen. Was ist ein Waise? Und wie entsteht ein solcher?
Waise = Klient, der am Ergebnis einer Operation, hier RPC, keine Interesse hat oder vorher terminiert
Beschreiben Sie ein Verfahren zur Waisenbehandlung mittels Epochen. Was ist eine Epoche?
Eine Epoche ist ein Zeitabschnitt mit sequentiell nummerierten Teilabschnitten.
Broadcast an alle Beteiligten – Terminieren und Neustart aller Teilnehmer
Mit traditionellen Transaktionen können alle Effekte mittels rollback() zurückgenommen werden. Was ist erforderlich, wenn ein commit() durchgeführt wurde und die Effekte anschließend zurückgenommen werden sollen?
Kompensationstransaktion
Welche Aufgaben hat der Stub beim Remote Procedure Call? Nennen Sie mindestens zwei.
Serialisieren
Deserialisieren
Aus welchen Gründen müssen die Parameter des Remote Procedure Calls auf der Senderseite serialisiert und auf der Empfängerseite deserialisiert werden?
Wiederherstellung der semantisch gleichen Repräsentation
Gilt der Zwang zur Serialisierung/Deserialisierung auch für die Resultate von Funktionen?
Zwang gilt für:
Die Liste der Parameter •
Die (Liste der) Resultate •
Exception-Information
Wenn ein Remote Procedure Call eine Funktion aufruft, was muss alles beim Rücktransport der Informationen zum Aufrufer berücksichtigt und daher auch übertragen werden?
Die Liste der Parameter • Die (Liste der) Resultate • Exception-Information
Wenn verkettete Strukturen, z.B. Objekte vom Typ List<> in Java, serialisiert werden, muss ein bestimmtes nicht einfach zu lösendes Problem gelöst werden, welches?
Alle referenzierten Objekte müssen mit serialisiert werden. – Aber wie weit muss das gehen? Liste von Objekten: die ganze Liste?
Wie können Referenzen mit Pointern serialisiert werden? Beschreiben Sie drei Vorgehensweisen und bestimmen Sie deren Vor- und Nachteile.
1) Einfach verbieten Nachteil: wird häufig gebraucht, z.B. Output-Parameter read(…) 2) Alle referenzierten Objekte müssen mit serialisiert werden. – Aber wie weit muss das gehen? Liste von Objekten: die ganze Liste? 3) Alle referenzierten Objekte müssen lokal verfügbar sein, d.h. die Objekte müssen zwischen Knoten verschiebbar sein und zum Ort, an dem die Routine arbeitet, hin wandern.
Wie sieht die grundsätzliche Software-Struktur auf der Seite des Aufgerufenen, also des Servers, aus?
Proc ProcessCall
daten empfangen
daten deserialisieren
daten verarbeiten
daten serialisieren
daten zurückgeben
Auf der Server-Seite befindet sich eine Endlos-Schleife, die alle Requests abarbeitet und sonst nichts tut.
Beschreiben Sie die typische Speicheraufteilung eines laufenden Prozesses bzw. Programms.
Stack
Frei
Heap
.Was wird unter Reflexion (Englisch: reflection) bei Programmiersprachen verstanden?
Reflexion = Möglichkeit, die eigenen Programmstrukturen zur Laufzeit selbst zu analysieren und zu benutzen
Die Routine reflection(Name) durchsucht die Symboltabellen zur Laufzeit nach dem Namen der Routine und liefert deren Adresse bzw. Null.
Wie wird bei Java und anderen per Compiler übersetzten Sprachen Reflexion prinzipiell realisiert?
Die Symboltabellen beinhalten die Zuordnung zwischen dem Namen zur Compile-Zeit und der Adresse im Code.
Wie wird bei Skript-Sprachen wie z.B. JavaScript oder PHP Reflexion prinzipiell intern - also nicht auf der Ebene der Sprachkonstrukte - realisiert?
In PHP kann über eine Variablen mit dem Inhalt des Namens der Routine indirekt eine Routine aufgerufen werden.
$
Beschreiben Sie den Prozess des Bindens von Programmen durch einen Linker (Linkage Editor oder Binder).
Der Lader und der Linker sind als parallel laufende Threads realisiert. – Der Lader liest die externe Datei ein. – Der Linker aktualisiert die Tabellen und bestimmt, welche Datei aus welcher Bibliothek geladen werden soll. – (So in etwa ist es in Java realisiert: Classloader)
Wodurch unterscheidet sich ein Linker (Linkage Editor oder Binder) von einem Lader (Loader)?
– Der Lader liest die externe Datei ein. – Der Linker aktualisiert die Tabellen und bestimmt, welche Datei aus welcher Bibliothek geladen werden soll.
Was bedeutet technisch, wenn von einem nicht-wartenden send() oder receive() gesprochen wird? Welche Konsequenzen hat das „Nicht Warten“?
Ein Thread wartet stattdessen auf die Ergebnisse
Welche Reaktionen erscheinen sinnvoll, wenn beim nicht-wartenden send() festgestellt wird, dass die erforderliche Sende-Queue im eigenen System voll ist und daher das send() nicht ausgeführt werden kann?
das send() wartet auf freien Speicher via Thread
Wozu dienen Thread-Pools? Warum werden sie benutzt?
Es wird vorher ein Threadpool angelegt, so dass nur bei Überlast neue Threads erzeugt werden. Ein Thread geht nach getaner Arbeit in den Threadpool (Wartezustand) und wird für neue Arbeit aktiviert.
Treten bei wartenden (klassischen) RPCs Probleme des wechselseiitigen Ausschlusses innerhalb einer Anwendung auf?
NEIN
Was muss bei der Benutzung mehrfacher asynchroner send()-Operationen innerhalb einer verteilten Anwendung beachtet werden?
Die Daten der Anwendungen müssen getrennt werden.
Beim Starten/Hochfahren eines verteilten Systems müssen die beteiligten Komponenten erzeugt werden. Wie kann dies realisiert werden? Machen Sie dazu einen Vorschlag.
Dynamisches Erzeugen
Erzeugen durch einen Konstruktor/Booter
Wenn unter einer Komponente das Äquivalent einer Klasse verstanden wird, was wäre dann bei den Komponenten eine Instanz?
Session
Warum sollten alle laufenden Anwendungen jeweils eine eindeutige ID besitzen? Was kann anhand dieser ID bestimmt werden?
Session
Auf einem Server liegt die Implementierung einer Komponente sowie z.B. zwei Instanziierungen dieser Komponente. Nun wird eine Nachricht empfangen und muss der „Komponente“ zugeordnet werden. Beschreiben Sie dazu den prinzipiellen Algorithmus.
Anhand der ID der Anwendung wird die Nachricht einer Instanz (Objekt) auf einem Server zugeordnet
Besteht eine laufende verteilte Anwendung aus Komponenten oder aus den Instanzen der beteiligten Komponenten?
Instanzen
.Nennen Sie mindestens zwei Gründe, warum jeder RPC-Aufruf eine eindeutige Nummer haben sollte.
Jede Instanz muss explizit hochgefahren (gebootet) werden. • Jede Instanz muss explizit heruntergefahren (shutdown) werden.
Bei den Namensdiensten wird häufig zwischen Adressen und Namen unterschieden. Worin liegen die Unterschiede? Definieren Sie beide.
Adresse = Identifikation eines Ortes und auch eines Objektes an diesem Ort Beispiele: IP-Adresse, RAM-Adresse •
Name = Symbolische Identifikation eines Objektes unabhängig vom Ort Beispiele: www.htw-berlin.de, [email protected], readme.txt
Was unterscheidet einen Namen für einen Dienst von einem Namen von einem Server?
Ein Dienstname kann als Abstraktion von Namen von Servern angesehen werden, denn unterschiedliche Server können denselben Dienst anbieten.
Welche Aufgaben hat ein Namensdienst (Name Service, Directory Service)? Nennen Sie dazu drei typische Operationen.
register() , unregister() ,query()
In der Datenbank eines Namensdienstes werden verschiedene Informationen gespeichert. Nennen Sie dafür drei Beispiele.
Adresse – hier IP-Adresse
• Name – hier Name des Dienstes
• Weitere Informationen (Attribute), z.B. – Art des Dienstes – Kosten – Öffentlich, beschränkter Zugang – Passwörter
Wenn zwei Klienten sich innerhalb eines Netzwerks finden wollen: was müssen sie dazu tun, wenn sie ohne Broadcast-Operationen auskommen wollen?
Mit der abstrakten Operation query() wird im Informations-bestand des Namensservers gesucht.
Wofür steht das Kürzel DNS? Was ist die wichtigste Aufgabe des DNS-Dienstes?
Domain Name Service (DNS)
Umsetzung einer symbolischen Adresse nach IP
– Umsetzung einer IP-Adresse zur symbolischen
– Vermerken der Adressen von E-Mail-Servern –
Vermerken von Informationen über Stationen
– Vermerken der Adressen anderer DNS-Server
Was ist eine Top-Level-Domain? Was ist eine Domain?
Alte Top-Level-Domains:
.com Unternehmen
.net Netzwerkbetreiber
.org Organisationen
Domain:Adressbereich
Wieviele Subdomains kann eine Domain besitzen?
unbegrenzt