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-