PRESENTAZIONE | SPECIFICHE | BILANCIAMENTO DEL CARICO | TOLLERANZA AI GUASTI |ANALISI DELLE PRESTAZIONI | METODO DI CALCOLO | CONCLUSIONI


DFG - Distributed Fractal Generator

DFG è una applicazione distribuita per la creazione di immagini dell'insieme di Mandelbrot. La generazione delle immagini avviene sfruttando le risorse di calcolo di varie workstation, secondo lo schema seguente:

Struttura di DFG


Nella struttura dell'applicazione si possono distinguere tre diverse entità:
DFGClient I compiti di ciascun client presente nel sistema sono i seguenti: 
  • Permettere all'utente di inserire i parametri che descrivono l'immagine che vuole ottenere
  • Inviare richieste di servizio a DFGServer
  • Ricevere e gestire risposte da DFGServer
  • Visualizzare le immagini ricevute da DFGServer (in caso di terminazione del servizio con successo) o gli eventuali messaggi di errore
  • Permettere all'utente di interrompere il calcolo di un'immagine e ottenere il risultato parziale del calcolo
E' da notare il fatto che la presenza dei server DFGSlave è completamente invisibile ai client, i quali interagiscono unicamente col server principale. 

Note sull'implementazione: i client sono realizzati come applet Java e sono accessibili da una pagina web residente sul nodo su cui opera DFGServer. Alternativamente, i client possono essere applicazioni Java (in questo caso, sulla linea di comando si dovrà specificare l'host su cui risiede DFGServer).

DFGServer E' il server principale. I suoi compiti sono i seguenti: 
  • Interagire con i client, ricevendo le richieste di servizio e spedendo le relative risposte
  • Smistare il lavoro tra gli slaves disponibili (vedere sezione Bilanciamento del carico)
  • Ricevere i risultati dagli slaves e comporre le risposte per i client
  • gestire eventuali richieste di interruzione di un calcolo
Note sull'implementazione: il server è un'applicazione Java e usa vari thread per poter svolgere i suoi compiti in modo concorrente.
DFGSlave I compiti di ciascun DFGSlave sono i seguenti: 
  • Ricevere richieste di servizio da parte del server principale
  • Elaborare le richieste di servizio ricevute e produrre una risposta
  • Inviare la risposta al server principale
  • gestire eventuali messaggi di richiesta di interruzione di un calcolo
Note sull'implementazione: gli slaves sono applicazioni Java. Per motivi di efficienza, il calcolo dell'immagine viene svolto utilizzando una funzione nativa. Si è scelto di realizzare gli slaves come servitori paralleli (le motivazioni di questa scelta sono spiegate nella sezione Specifiche degli slaves).

Questo progetto è stato realizzato da Fabio Cesari e Massimo Campeggi per il corso di Reti di Calcolatori (A.A. 98/99) tenuto dal prof. Antonio Corradi presso la facoltà di ingegneria informatica dell'Università di Bologna.


PRESENTAZIONE | SPECIFICHE | BILANCIAMENTO DEL CARICO | TOLLERANZA AI GUASTI |ANALISI DELLE PRESTAZIONI | METODO DI CALCOLO  | CONCLUSIONI