Beleg
Thema
Entwicklung eines verteilten Programms zur Anzeige der Mandelbrotmenge
Organisation
- Gruppenbeleg: (3-4 Studenten pro Team, 1 Teamsprecher)
- Vortrag/Diskussion über erreichte Ergebnisse
- Beleg ist auf Github zu hosten: HTWDD-RN
Details der Aufgabe
- Eingabe eines Zoompunktes
- schrittweiser Zoom zu zu diesem Zoompunkt
- Nutzung einer geeigneten Technologie zur Verteilung der Aufgaben auf mehrere Server (und mehrere Threads)
- Architekturmuster (Client): Model-View-Presenter
- Grafikprogrammierung: Java/Swing mit BufferedImage
- Direkte Darstellung der Ergebnisse oder Pufferung und anschließende Darstellung
- Betrachtung von verschiedenen Verteilungsstrategien (zB.: Round-Robin)
Dokumentation
- Ermittlung des Verteilungsgewinns, Zeitmessung und geeignete Darstellung
- mindestens Laufzeit über der Workeranzahl mit einem einzigen Thread und mit 4 Threads im Vergleich zur Laufzeit ohne Verteilung mit 1/4 Threads
- Beschreibung der verwendeten Architektur (mit geeigneter grafischer Darstellung)
- Auflistung der Arbeit der Teammitglieder
Auswahl möglicher Techniken zur Verteilung
- Java RMI (favorisiert)
- UDP/TCP native
- Message oriented Middleware (MOM)
- REST z.B. mittels Spring Boot
- …
Übergabeparameter der Aufgabe
Aufgabe:
- Ausschnitt in der komplexen Ebene zur Berechnung
- Unterteilung in Pixelanzahl
Mögliche Rückgabewerte der Worker:
- Iterationswert der Rekursionsformel pro Pixel (Wandlung auf Farbwert im Master)
- Colorwert pro Pixel
- BufferedImage
- …
Mögliche RMI-Architekturen
- Zentraler Master und Worker (ohne Bootstrap-Server)
- Registry läuft auf Master
- Master meldet sich an Registry an
- Worker erhalten Stub des Masters mittels Registry-Lookup
- Worker registrieren sich beim Master mittels vom Master bereitgestellter Methode
- Master kann auf die einzelnen Worker mittels Stub zugreifen und Aufgaben verteilen
- Ergebnisse können entweder als Rückgabewert geliefert werden (synchron) oder per Callback (asynchron)
- Im Falle eine MVP-Architektur kann im Model ein Thread pro Worker verwendet werden (als Zwischenschritt könnten die Aufgaben zunächst ohne RMI in den Threads des Models abgearbeitet werden)
- Zentraler Bootstrap-Server
- Worker registrieren sich beim Bootstrap-Server auf dortiger Registry
- Master holt eine Liste der Worker-Stubs vom Bootstrap-Server
- Master verteilt Aufgaben an Worker
Parameter
- Um die Ergebnisse der Gruppen vergleichbar zu machen ist für die Zeitmessung von folgenden Parametern auszugehen:
- Auflösung: 1024 x 768
- Zoompunkt: -0.34837308755059104, -0.6065038451823017
- Zoomfaktor: 0.8
- Stufenanzahl: 100
- Anzahl Worker: 4 Rechner
- Iterationsanzahl: max. 1000
- Alle Parameter sollten mittels GUI/Kommandozeile parametrierbar sein!
Fakultativ
- Nutzung eines Zahlenformats mit erhöhter Genauigkeit statt Double
Letzte Änderung: 19. May 2025 12:29