Tuplespace programmering



Like dokumenter
IN2010: Algoritmer og Datastrukturer Series 2

Slope-Intercept Formula

Dynamic Programming Longest Common Subsequence. Class 27

Fra sekvensielt til parallelt

Fra sekvensielt til parallelt

Unit Relational Algebra 1 1. Relational Algebra 1. Unit 3.3

EKSAMEN I FAG TDT4100 Objekt-orientert programmering. Fredag 3. juni 2005 KL

Introduksjon til objektorientert. programmering. Hva skjedde ~1967? Lokale (og globale) helter. Grunnkurs i objektorientert.

Moving Objects. We need to move our objects in 3D space.

Object interaction. Innhold. Abstraksjon Grunnleggende programmering i Java Monica Strand 3. september 2007.

< T extends Comparable<T> > Indre klasser mm. «Det du bør ha hørt om før oblig 4»

Kapittel 9. Distribusjon. Fjernbruker. Tjenermaskin LAN WAN. Nærbruker. Figur 9-1: En enkel klient/tjener distribusjon

INF1010. Grensesnittet Comparable<T>

INF1010, 21. februar Om å gå gjennom egne beholdere (iteratorer) Stein Gjessing Inst. for Informatikk Universitetet i Oslo

Gjennomgang av eksamen H99

5 E Lesson: Solving Monohybrid Punnett Squares with Coding

HØGSKOLEN I SØR-TRØNDELAG

Hva er verdien til variabelen j etter at følgende kode er utført? int i, j; i = 5; j = 10; while ( i < j ) { i = i + 2; j = j - 1; }

Socket og ServerSocket

Hentet fra Suns Totorial:

INF Notater. Veronika Heimsbakk 10. juni 2012

Mathematics 114Q Integration Practice Problems SOLUTIONS. = 1 8 (x2 +5x) 8 + C. [u = x 2 +5x] = 1 11 (3 x)11 + C. [u =3 x] = 2 (7x + 9)3/2

Programmeringsspråk for nybegynnere. Krav til språket. Krav til språket. Krav til språket

EKSAMEN I FAG TDT4180 MMI Mandag 18. mai 2009 Tid: kl

Kapittel 9: Sortering og søking Kort versjon

Generalization of age-structured models in theory and practice

TDT4100 Objektorientert programmering

OOT Seminar H-97 CORBA. Praktisk del

Gjøre noe i hele treet = kalle på samme metode i alle objekten. Java datastruktur Klassestruktur

Løsningsskisse, eksamen J2EE og distribuerte systemer 19.mai 2004

FIRST LEGO League. Härnösand 2012

Du må håndtere disse hendelsene ved å implementere funksjonene init(), changeh(), changev() og escape(), som beskrevet nedenfor.

Kapittel 13 Advanced Hypertext Implementation. Martin Lie Ole Kristian Heggøy

Vekeplan 4. Trinn. Måndag Tysdag Onsdag Torsdag Fredag AB CD AB CD AB CD AB CD AB CD. Norsk Matte Symjing Ute Norsk Matte M&H Norsk

INF2100. Oppgaver 23. og 24. september 2010

Oppsummering. Kort gjennomgang av klasser etc ved å løse halvparten av eksamen Klasser. Datastrukturer. Interface Subklasser Klasseparametre

buildingsmart Norge seminar Gardermoen 2. september 2010 IFD sett i sammenheng med BIM og varedata

EKSAMEN. Algoritmer og datastrukturer. Eksamensoppgaven: Oppgavesettet består av 11 sider inklusiv vedlegg og denne forsiden.

JDBC. Java Data Base Connec.vity

Graphs similar to strongly regular graphs

Eks 1: Binærtre Binærtretraversering Eks 2: Binærtre og stakk

Kapittel 7: Mer om arv

EKSAMEN I FAG TDT MMI Lørdag 11. august 2012 Tid: kl

Stein Gjessing. Institutt for informatikk. Universitetet i Oslo. Institutt for informatikk

Java RMI. Introduksjon. Markus Foss Hans-Gunnar Vold

Del 3: Evaluere uttrykk

Eksamen INF1010 V2009 Del B prøveeksamen V2010 Vekt 60 %

PRIORITETSKØ. Aksjehandel. Datastruktur for aksjehandel. Nøkler og Totalorden-relasjonen

Trigonometric Substitution

Dagens tema: 12 gode råd for en kompilatorskriver. Sjekking av navn. Lagring av navn. Hvordan finne et navn?

INF Seminaroppgaver til uke 3

Oppgave 1a Definer følgende begreper: Nøkkel, supernøkkel og funksjonell avhengighet.

Norges Informasjonsteknologiske Høgskole

UNIVERSITETET I OSLO

Det finnes ingenting. som kan gjøres med interface. men som ikke kan gjøres uten

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr

Dagens tema: 12 gode råd for en kompilatorskriver

Løsningsforslag til eksamen i INF1000 våren 2006

EKSAMEN I FAG TDT MMI Lørdag 4. juni 2005 Tid: kl

Tilkobling og Triggere

Algoritmer og datastrukturer Kapittel 3 - Delkapittel 3.1

Call function of two parameters

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr

INF2100. Oppgaver uke 40 og

The regulation requires that everyone at NTNU shall have fire drills and fire prevention courses.

Norsk (English below): Guide til anbefalt måte å printe gjennom plotter (Akropolis)

TDT4117 Information Retrieval - Autumn 2014

TDT4100 Objektorientert programmering

1. Krav til klasseparametre 2. Om å gå gjennom egne beholdere (iteratorer) Stein Gjessing Inst. for Informatikk Universitetet i Oslo

Læreboken på 45 minutter

Videregående programmering 6

UNIVERSITY OF OSLO DEPARTMENT OF ECONOMICS

UNIVERSITETET I OSLO

INF Løsning på seminaropppgaver til uke 8

J2EE. CMP Entity Beans, Transaksjoner, JSP

1- og 2-veis Innkapsling Java Stabel Kø Prio-kø Iterator. Enveis- og toveislister Innkapsling («boxing») (Big Java 6.8.5)

Implementering av caching ved hjelp av Spring. Christian Vestøl

Objektorientert design av kode. Refaktorering.

Prosedyrer. Lars Vidar Magnusson. October 26, Lars Vidar Magnusson () Forelesning i DAS October 26, / 19

INF2100. Oppgaver 9. oktober 2012 C 100 X 10

Exercise 1: Phase Splitter DC Operation

FASMED. Tirsdag 21.april 2015

INF2100. Oppgaver 6. og 11. oktober 2011 C 100 X 10

Dagens tema: Sjekking

pnvdb Documentation Release Jan Tore Kyrdalen

Repitisjonskurs. Arv, Subklasser og Grensesnitt

1- og 2-veis Innkapsling Java Stabel Kø Prio-kø Iterator. Enveis- og toveislister Innkapsling («boxing») (Big Java 6.8.5)

Ole Isak Eira Masters student Arctic agriculture and environmental management. University of Tromsø Sami University College

INF2100. Oppgaver 26. september til 1. oktober 2007

Synkronisering I. Kapittel 6. Tråd A. ferdig. t.varsle() u.vente() Tråd B. ferdig. tid

UNIVERSITETET I OSLO

Speed Racer Theme. Theme Music: Cartoon: Charles Schultz / Jef Mallett Peanuts / Frazz. September 9, 2011 Physics 131 Prof. E. F.

GRAF-TRAVERSERING. Hvordan utforske en labyrint uten å gå seg vill. Rekkefølge på kanter: Dybde-Først Søk A B C D E F G H I J K L M N O P

// Translation // KLART SVAR «Free-Range Employees»

Inf1010 oppgavesamling

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister

Øystein Haugen, Professor, Computer Science MASTER THESES Professor Øystein Haugen, room D

Fra Python til Java. En introduksjon til programmeringsspråkenes verden. Dag Langmyhr

GUI («Graphical User Interface») del 2

Transkript:

Tuplespace programmering..en kort sammenligning for perspektivets skyld..systemmodellen i Tuplespace..gjenfinningsregler..et applikasjonseksempel Planlagt tid: 50-60 min. 1

Anders Fongen Førsteamanuensis ved Norges Informasjonsteknologiske Høgskole NITH tilbyr 9 Bachelor-programmer og 2 Master-studier Med skolesteder i Oslo, Bergen og Stavanger Tidligere jobbet 17 år i industrien programmerer. konsulent, mellomleder og arkitekt PhD fra University of Sunderland Forsker på distribuerte søkemotorer og p2p-arkitektur http://www.fongen.no 2

Distribuerte applikasjoner: Hvorfor trenger vi mellomvare? Øke flyttbarheten til programvaren (portabilitet) Tilby en programmeringsmodell gjennom et API Gjøre distribusjonen usynlig (transparens) Tilby nødvendige tilleggstjenester Adressering, synkronisering, deling, transaksjonshåndtering m.m. 3

Relatert teknologi: Remote Procedure Calls (RPC) synkron, unicast RMI, EJB, Corba, WebServices Message-Oriented Middleware (MOM) asynkron, uni-/multicast publish-and-subscribe / distributed event notification Objektorienterte databaser deling, lagring, transaksjoner Alle 3 trengs, men kan de kombineres? 4

Tuplespace delt objektlager (lager av Tupler) assosiativ gjenfinningsmodell transaksjonell beskyttelse (Atomicity-Isolation) synkronisering av gjenfinningsoperasjoner låse klienten inntil data kan leses aka Linda programming model Gjenfinningsmodell - synkroniseringsmodell 5

IBM TSpaces Kjørbar server API for klienter Gratis nedlasting for evaluering Enklere og bedre enn Sun's JavaSpaces http://www.almaden.ibm.com/cs/tspaces/ Klient Klient API API brannveggvennlig TSpaces Klient API 6

En tuple er: et ordnet sett av felt (Fields) felt kan være alle serializable objekter tag1 tag2 tag3 string object... enhet for lagring og gjenfinning Tuple t0 = new Tuple("Anders","Lisbeth",new Float(26f)); Tuplespace ts = new Tuplespace("TS98","10.21.6.96"); ts.write(t0); // Skriver til lageret 7

En mal er: en tuple med mulige joker-felt selekterer et sett av lagrede tupler paring (matching) på type og verdi Tuple tx = new Tuple("Anders", new Field(String.class), new Field(Float.class)); joker-felt 8

Gjenfinningsregler Template parameter selekterer et sett av tupler Først type, så verdi hent én, eller alle som passer konsumerer tuple, eller ikke Tuple t0 = ts.take(tx); // non-consuming: ts.read(tx) blokkerer klienten, eller ikke Tuple t0 = ts.waittotake(tx);//non-blocking: ts.take(tx) 9

Tuplespace delt, assosiativt datalager tag1 tag2 tag3 string object... tag4 tag2 tag3 string object... tag1 tag5 tag3 string object... Passer til??? tag2?????????... tag1 tag5 tag3??????... ts.write(tuple) tuple = ts.read(template) (ikke-konsumerende) tuple = ts.take(template) (konsumerende) Tuplespace take og read er ikke-blokkerende (asynkron) waittoread og waittotake er blokkerende (synkron) 10

Tuplespace (2) En Tuplespace kan brukes som delt lager Et av feltene brukes som nøkkel til tupletene read(mal) lar tupleten bli igjen i tuplespace ganske likt en oodb (f.eks. db4o) En Tuplespace kan brukes for meldingsflyt Feltene inngår i et adresseringsskjema Avsender sender tuplets med write(tuple) Mottager mottar med waittotake(mal) eller til synkronisering én-til-én, mange-til-én, mange-til-mange 11

Tuplebasert meldingsflyt Meldinger fra S til M: M leser med en mal som selekterer tupler "addressert" til M S skriver tupler i tilsvarende format Tuple melding = new Tuple("S","M","Melding"); ts.write(melding); // ts repr. tuplespace Tuple mal = new Tuple(new Field(String.class),"M", new Field(String.class)); Tuple mottatt = ts.waittotake(mal); Meldingsflyten blir bufret og synkronisert Tupledesign == protokolldesign Gjenfinningsmodell == adressesemantikk 12

Toveis meldingsflyt kan etterligne Gir synkron kall-semantikk RPC-semantikk ts.write(req) resp = ts.waittotake(mal) tuple req = ts.waittotake(mal)... ts.write(resp) tuple aktiv blokkert Klient Tjener 13

Adressesemantikk Felt brukt for adresseringsformål: kan representere roller (f.eks. printserver ) distribuert ressursstyring room service kan representere temaer ( loggmelding ) kan inngå i et typehierarki (markørklasser) Tuplespace Klient Klient webstatistikk loggmeldinger hastemeldinger Klient sikkerhetsbrudd 14

Paring på verdier i malen Når malens type passer med tuplen, skjer en paring på verdiene (om det ikke er et jokerfelt) Utnytter equals()-metoden i de respektive klassene Kan overskrive denne metoden i egne klasser for å endre semantisk innhold av likhet flerdimensjonal nærhet (GIS, Info Retrieval) bruk av synonymlister 15

Også verd å nevne: Hendelsesmetoder asynkron utføring av kode når tupler skrives eller fjernes Transaksjoner Tupler med holdbarhet fjernes automatisk etter en tid Kombinasjon av holdbarhet og hendelsesmetoder gjør én-til-mange kommunikasjon mulig 16

Fyldig eksempel distribuert tallknusing Én klient mange tjenere Klienten kjenner ikke antallet tjenere plasserer et problem i tuplespace Tjeneren kjenner ikke det aktuelle problemet henter et problem fra tuplespace opererer på et generisk grensesnitt skriver en løsning tilbake til tuplespace Tjeneren kan dele problemet i to og legge den ene halvdelen tilbake i tuplespace 17

Konfigurasjonen: Klient Tjener Tuplespace Tjener Tjener Tjenerstyrt og distribuert: - partisjonering av problemet - ressursallokering (CPU og minne) 18

Problemets grensesnitt: package no.nith.andfon.cs5023.tspc3; // An interface for a generic numeric problem. The mathematical // expression, the parameters and the sequence of parameter iterations // are hidden in the implementation. public interface NumericProblem extends java.io.serializable { // Return true of the problem is solved with the // current set of parameters boolean solved(); // Return the number of necessary iterations on the solved() method // in order to exhaust the parameter space long iterations(); // Change the parameters so that a new iteration of solve() // can be called boolean nextiteration(); // Split the "iteration space" into two objects. This object // retains one half, and the other half into the returned object NumericProblem split(); // Present a solution to the problem in string format String solution(); 19

Tjenerens kode: package no.nith.andfon.cs5023.tspc3; public class NumberCruncher implements NumberCruncherInterface { private boolean iterating = true; public static void main(string[] args) { long maxnumberofiterations = 1000; new NumberCruncher(maxNumberOfIterations); } } public NumberCruncher(long maxiterations) { SpaceWrapper sw = new SpaceWrapper(this); while (true) { // pick a task from the space NumericProblem np = sw.gettask(); // calculate the necessary number of iterations for this task long it = np.iterations(); // if it is too many, split the task in two while (it > maxiterations) { NumericProblem np2 = np.split(); // keep np, and return np2 back to the space sw.puttask(np2); it = np.iterations(); } // now iterate over this task and look for a solution while (iterating) { if (np.solved()) { // announce solution sw.putsolution(np); iterating = false; } if (!np.nextiteration()) break; } // do not fetch more tasks if a solution // has been found (by anyone) if (!iterating) return; } } //.. some code left out 20

package no.nith.andfon.cs5023.tspc3; Problemet - I: // A specific mathematical problem: Find a product's // two prime factors public class Prime implements NumericProblem { public long lo1,up1,lo2,up2; // Defines the iteration room private long x1,x2; // Working variables private long primeproduct; // Right side of the equation public Prime(long l1,long u1,long l2, long u2, long prod) { lo1 = l1; up1 = u1; lo2 = l2; up2 = u2; x1 = lo1; x2 = lo2; primeproduct = prod; } // Calculate (or predict) the number of iterations necessary // to exhaust the parameter room public long iterations() {return (up1 lo1)*(up2 lo2);} // Make the instance variables ready for the next call // to solved(). (Note: we do not ensure prime factors in this code) public boolean nextiteration() { if (x1 < up1) x1++; else if (x2 < up2) { x1 = lo1; x2++; } else { return false; } return true; } 21

Problemet - II: // Split the problem in two smaller halves by dividing // the iteration room in two public NumericProblem split() { long x; NumericProblem np; // Pick one of the two parameters at random, and divide if (Math.random() > 0.5) { x = (up1 lo1)/2 + lo1; np = new Prime(lo1,x,lo2,up2,primeProduct); lo1 = x+1; } else { x = (up2 lo2)/2 + lo2; np = new Prime(lo1,up1,lo2,x,primeProduct); lo2 = x+1; } x1 = lo1; x2 = lo2; return np; } // Check if we have found a solution with these parameters public boolean solved() { return x1 * x2 == primeproduct; } // Present the solution in string format public String solution() {return "The factors are " + x1 + " and " + x2;} } public String tostring() { return "NP: " + lo1 + " " + up1 + " " + lo2 + " " + up2 + " " + x1 + " " + x2; } 22

Klientens kode package no.nith.andfon.cs5023.tspc3; // This is the master and the conductor for the solution of the // numeric problem. It generates the first task and puts it on the // space, and then waits for the solution public class PrimeBallerina { } public static void main(string[] args) { SpaceWrapper sw = new SpaceWrapper(); sw.erasealltuples(); long primeprod = 13444; NumericProblem np = new Prime(1,10000,1,10000,primeprod); sw.puttask(np); NumericProblem np2 = sw.getsolution(); System.out.println(np2.solution()); } 23

Sekvensdiagram: Client Server Server SpaceWrapper create np:numproblem puttask(np) iterate np = gettask() puttask(np2) iterate np = gettask() puttask(np2) event putsolution(np) event 24

Idéer som jeg vil se nærmere på: Tuplespace kombinert med Codebase property: basis for mobile agenter adressesemantikk gir avanserte muligheter for å pare agent og vert tuplespace gir et medium for kommunikasjon mellom agenten og homebase, eller mellom agentene Service-orientert samarbeid (CSCW) basert på mobile ambassadører ambassadør blir en mobil "representant", mer enn en agent (som handler på mine vegne) 25

Ferdig! Takk for oppmerksomheten Noen spørsmål? Ta gjerne kontakt anders@fongen.no se også www.fongen.no der ligger denne forelesningen 26