Vs7.21 7.3 Replizierte Objekte Vollständige Replikationsabstraktion ist attraktiv und machbar. 2...

7
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

Transcript of Vs7.21 7.3 Replizierte Objekte Vollständige Replikationsabstraktion ist attraktiv und machbar. 2...

Page 1: Vs7.21 7.3 Replizierte Objekte Vollständige Replikationsabstraktion ist attraktiv und machbar. 2 Beispiele: Orca(H. Bal, VU Amsterdam, 1987-90) = klassenbasierte,

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

Page 2: Vs7.21 7.3 Replizierte Objekte Vollständige Replikationsabstraktion ist attraktiv und machbar. 2 Beispiele: Orca(H. Bal, VU Amsterdam, 1987-90) = klassenbasierte,

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

Page 3: Vs7.21 7.3 Replizierte Objekte Vollständige Replikationsabstraktion ist attraktiv und machbar. 2 Beispiele: Orca(H. Bal, VU Amsterdam, 1987-90) = klassenbasierte,

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);

Page 4: Vs7.21 7.3 Replizierte Objekte Vollständige Replikationsabstraktion ist attraktiv und machbar. 2 Beispiele: Orca(H. Bal, VU Amsterdam, 1987-90) = klassenbasierte,

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))

Page 5: Vs7.21 7.3 Replizierte Objekte Vollständige Replikationsabstraktion ist attraktiv und machbar. 2 Beispiele: Orca(H. Bal, VU Amsterdam, 1987-90) = klassenbasierte,

vs7.2 5

7.3.2 Javanaise

Einsatzbereich: CSCW-Systeme

. . . . . Javanaise clients

Javanaise serverCSCW system

hier wird GUI Applet vorgehalten,erreichbar über Web Server

Page 6: Vs7.21 7.3 Replizierte Objekte Vollständige Replikationsabstraktion ist attraktiv und machbar. 2 Beispiele: Orca(H. Bal, VU Amsterdam, 1987-90) = klassenbasierte,

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.

Page 7: Vs7.21 7.3 Replizierte Objekte Vollständige Replikationsabstraktion ist attraktiv und machbar. 2 Beispiele: Orca(H. Bal, VU Amsterdam, 1987-90) = klassenbasierte,

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