Torrent-Beispiel - Wirtschaftsinformatik

Transcription

Torrent-Beispiel - Wirtschaftsinformatik
Aufgabenblatt 5
Architektur Verteilter Systeme
Wirtschaftsinformatik
SS 2016
Lernziele
• Einfaches Torrent-Protokoll
• Server als Vermittler
Aufgaben – 5 Punkte
Die Idee der Torrent-Protokolle liegt darin, dass zur Verteilung von Dateien
über das Internet auch die Klienten eingesetzt werden, die die betreffenden
Dateien bzw. deren Teile schon besitzen. Dazu werden die Dateien in kleine
Scheiben aufgeteilt, die jeweils eine Nummer bekommen. Wenn ein Klient sich
an den Server wendet, so liefert der Server nur eine kleine Menge dieser
Scheiben zufällig ausgewählt aus. Die fehlenden Scheiben muss/sollte sich der
Klient von anderen Klienten holen.
Nach einer gewissen Zeit haben viele Klienten Auszüge der betreffenden Datei,
aber nie die Datei vollständig. In der anschließenden Phase tauschen die
Klienten untereinander die Scheiben aus, so dass am Ende alle Klienten alle
Scheiben haben. Dazu teilt der Server die Adressen der ihm bis zu diesem
Zeitpunkt bekannten Klienten den anfragenden Klienten mit. Dies ist im Prinzip
die Idee.
Diese Idee wird nun in dieser Aufgabe so simuliert, dass ein Array von Werten
verteilt wird. Die Indices (Strings eines PHP-Hashs) sind dann die Scheibennummern, während die Array-Elemente die Scheibeninformationen simulieren.
Am Ende haben dann alle Klienten das vollständige Array/Hash.
Auch hier wird ein schrittweises Vorgehen empfohlen. Voraussetzung ist eine
funktionstüchtige Implementierung der ersten Aufgabenblätter. Bitte beachten
Sie die Hinweise in dem Foliensatz über die Aufgabenblätter.
1. Auch hier machen Sie ein Konzept bevor Sie beginnen: Der Manager und
damit der Torrent-Server sei Alice. Alice exportiert getSlice.php und
startServer.php; alle anderen Rechner sind Clients (Bobs) und
exportieren startClient.php , exchange.php und restart.php. a5.php ist
die Oberfläche für alle Rechner mit zwei Knöpfen: Ein Klick auf den 1.
Knopf macht den adressierten Rechner zum Manager (Alice) durch die
-1-
URL startServer.php, ein Klick auf den anderen Knopf macht ihn zu einem
Torrent-Client durch die URL startClient.php. Natürlich dürfen für einen
Rechner nicht beide Knöpfe gedrückt werden.
2. Das Szenario ist daher wie folgt: Zu jedem Server gibt es einen Browser.
Bei einem der Browser wird startServer.php, bei allen anderen
startClient.php aufgerufen. Diese beiden PHP-Routinen stellen gewissermaßen das Hauptprogramm für Alice und die vielen Bobs dar. Alle
Beteiligten notieren fleißig ihre Aktivitäten ins Log. Bei Alice wird das
alles wie im Aufgabenblatt 2 ausgegeben, so dass Sie alles nachvollziehen können.
3. Mit dem Klick auf den ersten Knopf wird startServer.php aufgerufen: Der
Manager (Alice) generiert dann einen Hash von N Elementen (N ist z.B.
100), wobei die Indexstrings zufällige Strings und die Werte zufällige
Integer sind.
4. Mit dem Klick auf den zweiten Knopf wird startClient.php aufgerufen: Ein
Client holt sich als erstes M Scheiben mit getSlice.php von Alice und
wartet auf das Startsignal (M ist z.B. 2) zum Tausch. Als Rückgabewert
erhält er von Alice die Scheiben sowie eine Liste von IP-Adressen, die
sich bisher beim Manager (Alice) gemeldet haben. Alice schreibt also die
Liste der IP-Adressen mit und schickt eine jedes Mal verlängerte Liste.
Beide Liste – Scheiben und IP-Liste – werden in JSON kodiert und vor
dem Senden umkodiert (Hex oder urlencoded, siehe vorheriges Aufgabenblatt).
5. Aber Alice merkt sich, die Anzahl der Scheiben des Klienten; diese Anzahl
muss seit der letzten Anfrage größer geworden sein, d.h. der Klient muss
getauscht haben bis er vom Server (Alice) neue Scheiben bekommt. Ist
die Anzahl zu klein, antwortet Alice mit 0 Scheiben.
6. Wenn alle Clients initial M Scheiben und die jeweilige Liste der IPAdressen geholt haben, beginnen die Klienten untereinander zu tauschen
(exchange.php). Auf dem Hinweg werden die eigenen Scheiben sowie die
eigene IP-Liste und auf dem Rückweg die fremden sowie die dem Partner
bekannten IP-Adressen ausgetauscht. Mit etwas Glück hat der Klient
nach dem gesamten Tauschvorgang mind. 1 Scheibe mehr.
7. Wenn der Client damit fertig ist und ihm noch Scheiben fehlen (es müssen ja am Ende N, z.B. 100, sein), wendet er sich an Alice, um von dort
weitere M Scheiben zu erhalten. Nun beginnt er wieder zu tauschen.
8. Es gibt nun zwei Sonderfälle: (a) Nach dem gesamten Tauschprozess hat
der Klient keine neue Scheibe bekommen, (b) von Alice erhält er nur
Scheiben, die er schon besitzt. Beide Fälle sind in der Endphase, wenn
fast alle Scheiben bei einem Klienten sind, wahrscheinlich. Überlegen Sie,
wie Sie diese beiden Fälle am besten behandeln.
9. Bitte beachten Sie, dass jede Aktivierung einer URL zur Parallelität führen
kann. Auch kann der Server (Alice) mehrere Clients parallel bedienen.
-2-
Achten Sie also auf den wechselseitigen Ausschluss.
10. Wenn ein Client alle Scheiben hat, terminiert der Prozess des Tauschens.
Er sollte aber immer noch bereit zu tauschen, wenn ein anderer Client
bei ihm dann noch anfragt. Der würde dann alle Scheiben bekommen.
11. Am Ende wird restart.php auf allen Rechnern gemacht und es kann dann
alles von neuem beginnen.
12. Freiwillig: Wer es möchte kann ja mal Untersuchungen durchführen,
wie groß bei einem N das M sein sollte, jeweils bei verschiedenen Anzahlen von Clients. Auch wäre es interessant heraus zu finden, ob es
nicht besser ist, beim Tauschen ein Limit an Scheiben zu tauschen, d.h.
nicht alle sondern vielleicht nur L (L kann z.B. 4 sein) Scheiben werden
zwischen den Clients getauscht.
Selbstverständlich können Sie auch alles anders machen. Es wird jedoch empfohlen immer in kleinen Schritten jeweils mit einem abschließenden Test voranzugehen.
Abnahme und Bewertung
Es sind max. 5 Punkte zu erreichen; fehlt etwas oder ist es nicht in Ordnung,
so werden Punkte abgezogen.
Die Abnahme erfolgt durch eine Vorführung im Labor. Bei der Abnahme müssen
alle Teilnehmer der Gruppe anwesend sein und in der Lage sein, die Lösung in
eigenen Worten zu erklären. Kann eine Person das nicht, so erhält sie auch
keine Punkte, selbst dann, wenn die Lösung perfekt ist.
-3-

Documents pareils