PDA

View Full Version : [Java] Applicazione distribuita, problemi...


Mazza2
16-05-2006, 15:48
Ciao!

Devo realizzare una applicazione distribuita in java, in modo tale che un lavoro, oneroso se eseguito su di una macchina sola, diventi piu' rapido se eseguito su + macchine.

Il problema ce mi è sorto è come gestire ilf atto che si vuole che le risorse disponibili siano dinamiche.

Mi spiego meglio, io ho un certo numero di macchine in rete lan, supponiamo che non so quelle che sono disponibili (accese) nel preciso momento che mi servono per fargli fare parte del lavoro. L'architettura sarebbe quella del tipo master e numerosi slave,.., il master distribuisce il lavoro dinamicamente alle macchine accese, in base anche ad informazioni che le stesse mi danno (es. la potenza del processore che montano),..,


Non so come realizzare la cosa iniziale proprio e cioe' il come, essendo io la macchina master, possa venire a conoscenza di chi c'e' che mi possa dare una mano in quel particolare momento

gazie

sottovento
16-05-2006, 16:05
Sulla tua macchina master ci sara' un thread, chiamiamolo MachineChecker, il quale periodicamente spedira' delle richieste Broadcast sulla tua rete.
Le macchine slave che sono accese e stanno facendo girare il tuo applicativo riceveranno la richiesta e ti spediranno un messaggio del tipo "Si, ci sono, sono vivo e sono pronto".
Ovviamente potrebbero esserci anche altre informazioni quali la disponibilita' in termini di risorse, ....
Per spedire le richieste in maniera broadcast, la macchina master si servira' della classe DatagramSocket.
In rete troverai tanto materiale all'uopo. Uno fra tanti:
http://www.javaspecialists.co.za/archive/newsletter.do?issue=028

Nella richiesta, ovviamente ci metterai l'indirizzo della macchina Master, in modo da poter rispondere.
Una volta che MachineChecker ha ottenuto la risposta, aggiornera' una TABELLA il cui nome potrebbe essere SlaveMachines.

Un (o molti altri, dipende da te) thread ricevera' il lavoro, consultera' questa tabella e spedira' agli slave registrati (vale a dire, contenuti nella tabella) il lavoro.

MachineChecker periodicamente rinnovera' la richiesta alle macchine slave, le quali saranno tenute a rispondere, in modo da implementare un watchdog

High Flying
Sottovento

Angus
16-05-2006, 18:03
Se hai voglia puoi provare ad usare JINI (http://www.jini.org).

sottovento
17-05-2006, 12:51
Se hai voglia puoi provare ad usare JINI (http://www.jini.org).

Sono andato a vedere il sito, non conoscevo l'esistenza di questo pacchetto. E' davvero la soluzione ideale