Download - Prezentare Apd Java Spaces
Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare
13.04.23 JavaSpaces – Dumitrache Mihai - Marian 1
Alternativa pentru implementarea modelului “replicated workers” în
sisteme distribuite: JavaSpaces
Dumitrache Mihai – Marian
Grupa [email protected]
Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare
13.04.23 JavaSpaces – Dumitrache Mihai - Marian 2
Voi vorbi despre ...
1. Ce este JavaSpaces
2. “Replicated workers” folosind JavaSpaces
Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare
13.04.23 JavaSpaces – Dumitrache Mihai - Marian 3
1. JavaSpaces este ...
Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare
13.04.23 JavaSpaces – Dumitrache Mihai - Marian 4
• un model de programare distribuită
• usor de folosit
• expresiv
• puternic prin complexitatea redusă codului
Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare
13.04.23 JavaSpaces – Dumitrache Mihai - Marian 5
• se folosesc obiecte şi memorii comune
• API-ul JavaSpaces conţine o serie de funcţii utile aplicaţiilor
Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare
13.04.23 JavaSpaces – Dumitrache Mihai - Marian 6
Metode utile aplicaţiilor
• write – se copiază obiectul în memoria comună
• read – se citeşte un obiect
• take – se copiază local un obiect dar se şterge din memoria comună
Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare
13.04.23 JavaSpaces – Dumitrache Mihai - Marian 7
Memoriile comune în JavaSpaces
• sunt persistente (obiecte păstrate la infinit ... )• şi asociative – obiectele sunt identificate prin
căutare asociativă şi nu prin identificatori sau locaţii de memorie
Pentru identificare se folosesc obiecte template.
Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare
13.04.23 JavaSpaces – Dumitrache Mihai - Marian 8
Reguli pentru obiectele JavaSpaces
import net.jini.core.entry.Entry;
public class Message implements Entry {
public String content;public Message(){}
}
• să implementeze interfaţa Entry• să aibă un constructor fără nici un argument• variabilele clasei să fie publice• variabilele clasei să nu fie de tipul primitivă:
Ex: “Integer a;” înlocuieşte “int a;”
Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare
13.04.23 JavaSpaces – Dumitrache Mihai - Marian 9
2. “Replicated workers” folosind JavaSpaces
Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare
13.04.23 JavaSpaces – Dumitrache Mihai - Marian 10
• Fiecare memorie comună reprezintă un Work Pool• Se introduc taskuri iniţiale in work pool• Procesele executa operaţia take pentru a prelua un task• Daca se genereaza taskuri noi se introduc in work pool
folosind operaţia write
Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare
13.04.23 JavaSpaces – Dumitrache Mihai - Marian 11
Exemplu de program folosind JavaSpaces
Jini frameworkhttp://www.jini.org/wiki/Main_Page
import net.jini.space.JavaSpace;
public class SpaceReader {public static void main(String argv[]){
MessageEntry msg = new MessageEntry();Lookup finder = new Lookup(JavaSpace.class);JavaSpace space = (JavaSpace) finder.getService();
MessageEntry template = new MessageEntry();MessageEntry result = space.read(template, null, Long.MAX_VALUE);System.out.println("The message is: "+result.content);
} }
Writer: MessageEntry msg = new MessageEntry();
msg.content = "Hello reader"; Lookup finder = new Lookup(JavaSpace.class); JavaSpace space = (JavaSpace) finder.getService(); space.write(msg, null, 60*60*1000);
Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare
13.04.23 JavaSpaces – Dumitrache Mihai - Marian 12
Întrebări ?