vs7.2 1
7.3 Replizierte Objekte
Vollständige Replikationsabstraktion ist attraktiv und machbar.
2 Beispiele:
Orca (H. Bal, VU Amsterdam, 1987-90)= klassenbasierte, nichtsequentielle Sprache mit replizierten Objekten
Javanaise (INRIA 1997/98)= Java mit Object Caching
vs7.2 2
7.3.1 Orca
Datenabstraktion, Klassen, keine Vererbung, keine Halde
object spec Queue; Schnittstelle der Klasse Queueoperation append(item: in integer);operation remove(item: out integer);end;
object impl Queue; Implementierung der Klasse Queue . . . . . Repräsentationoperation append ...operation remove ...begin . . . . . Initialisierungend;
. . . q: Queue . . . Vereinbarung eines Queue-Objekts
vs7.2 3
Parametermechanismen:
Wertparameter inErgebnisparameter outVariablenparameter shared (für Objekte)
Prozesstyp:
process Producer(q: shared Queue); . . . . . Vereinbarungenbegin . . . . . Anweisungenend;
Prozesserzeugung:
fork Producer(q);fork Consumer(q);
vs7.2 4
Semantik gemeinsamer Objekte:Serialisierbarkeit
Implementierung gemeinsamer Objekte:Leser/Schreiber-Ausschluss gemäß statischer Code-Analyse (!)
Replizierte Implementierung, falls Prozesse verteilt:
Kopie eines gemeinsamen Objekts bei jedem beteiligten Prozess
aktive Replikation (d.h. write-update, nicht write-invalidate)
sequentielle Konsistenz duch vollständig geordnete Rundrufe (mittels Sequencer (4.2.3))
vs7.2 5
7.3.2 Javanaise
Einsatzbereich: CSCW-Systeme
. . . . . Javanaise clients
Javanaise serverCSCW system
hier wird GUI Applet vorgehalten,erreichbar über Web Server
vs7.2 6
Javanaise-Szenario:
Benutzer lädt Applet (übers Netz) und startet es:
appletviewer <url>
Applet macht keine Fernaufrufe, sondern Caching,
aber nicht für Einzelobjekte, sondern für Object Clusters:
jedes Cluster hat ausgezeichnetes Anker-Objekt, über das es von außen angesprochen wird;
Bezugnahme auf andere Clusters über Vertreter.
vs7.2 7
Zugriff auf Anker grundsätzlich mit Lese/Schreibsperren,die vom Server (!) verwaltet werden.
Erteilung des Schreibrechts an einen Klienten geht einher mitUngültigmachen aller Kopien bei den anderen Klienten.
Somit schwache Konsistenz, gebunden an die Sperrsynchronisation,ausreichend für sequentielle Konsistenz aus Anwendersicht.
Replikationsabstraktion?
1. Zentralisiertes Programm entwickeln und austesten (!)
2. Entscheidungen treffen bzgl. Clustering und Anker-Klassen
3. Schnittstellen der Anker mit read/write annotieren
4. Vertreter-Klassen generieren
Top Related