Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Transaktionale Systeme Projektteil B Verteilte Transaktionen, Workflow- und Transaktions-Manager.

Ähnliche Präsentationen


Präsentation zum Thema: "Transaktionale Systeme Projektteil B Verteilte Transaktionen, Workflow- und Transaktions-Manager."—  Präsentation transkript:

1

2 Transaktionale Systeme Projektteil B Verteilte Transaktionen, Workflow- und Transaktions-Manager

3 Teil II Organisation Abgabe des zweiten Teils am Bearbeitung in denselben Gruppen wie Teil A API und Codegerüst nachher im Netz

4 VDB Projekt Teil II Implementierung eines Workflow Controllers und eines Transaktionsmanagers Client 1 Client 2 Client n Flights Hotels Cars Customers RM Workflow Controller Transaction Manager

5 Verteilte Transaktionen Fehlermodell 1.Knoten können ausfallen 2.Kommunikation zwischen Knoten zuverlässig Keine Replikation von Daten 1.Jeder Resource Manager kontrolliert eine Relation Verteiltes Commit Protokoll 1.Zentrales Zwei Phasen Commit Protokoll (2PC) 2.Einfache Termination- und Restartprotokolle

6 Verteilte Transaktionen Workflow Controller 1.Zentrales Frontend für Clients. 2.Leitet Anfragen der Clients entweder zum entsprechenden Resource Manager oder zum Transaktionsmanager weiter. Resource Manager Teilnehmer im 2PC Protokoll Transaktionsmanager Koordinator im zentralen 2PC

7 Beispiel: queryFlight() I Example #1: 1] xid = wc.start() ; 2] seatsAvailable = wc.queryFlight(xid, 347); 3] wc.commit(xid) ;

8 Beispiel: queryFlight() II Client 1 Flights Hotels Cars Customers RM Workflow Controller Transaction Manager start()

9 Beispiel: queryFlight() III Client 1 Flights Hotels Cars Customers RM Workflow Controller Transaction Manager queryFlight() enlist()

10 Beispiel: queryFlight() IV Client 1 Flights Hotels Cars Customers RM Workflow Controller Transaction Manager commit() prepare() commit()

11 Beispiel : addFlight() I Example #2: 1] xid = wc.start() ; 2] seatsAvailable = wc.queryFlight(xid, 347); 3] if (seatsAvailable = 0) wc.addFlight(xid, 347, 10, 500); 4] wc.commit(xid) ;

12 Beispiel : addFlight() II Client 1 Flights Hotels Cars Customers RM Workflow Controller Transaction Manager start()

13 Beispiel : addFlight() III Client 1 Flights Hotels Cars Customers RM Workflow Controller Transaction Manager queryFlight() enlist()

14 Beispiel : addFlight() IV Client 1 Flights Hotels Cars Customers RM Workflow Controller Transaction Manager addFlight()

15 Beispiel : addFlight() V Client 1 Flights Hotels Cars Customers RM Workflow Controller Transaction Manager commit() prepare() commit()

16 Beispiel : Verteilte TA I Example #3: 1] xid = wc.start() ; 2] addCars(xid, pa-hertz, 10, 30) ; 3] addRooms(xid, pa-sheraton, 20, 100) ; 4] wc.commit(xid) ;

17 Beispiel : Verteilte TA II Client 1 Flights Hotels Cars Customers RM Workflow Controller Transaction Manager start()

18 Beispiel : Verteilte TA III Client 1 Flights Hotels Cars Customers RM Workflow Controller Transaction Manager addCars() enlist()

19 Beispiel : Verteilte TA IV Client 1 Flights Hotels Cars Customers RM Workflow Controller Transaction Manager addRooms() enlist()

20 Beispiel : Verteilte TA V Client 1 Flights Hotels Cars Customers RM Workflow Controller Transaction Manager commit() prepare() commit()

21 Beispiel : Ausfall Knoten I Example #4: 1] xid = wc.start() ; 2] addCars(xid, pa-hertz, 10, 30) ; 3] addRooms(xid, pa-sheraton, 20, 100) ; 4] wc.commit(xid) ;

22 Beispiel : Ausfall Knoten II Client 1 Flights Hotels Cars Customers RM Workflow Controller Transaction Manager start()

23 Beispiel : Ausfall Knoten III Client 1 Flights Hotels Cars Customers RM Workflow Controller Transaction Manager addCars() enlist()

24 Beispiel : Ausfall Knoten IV Client 1 Flights Hotels Cars Customers RM Workflow Controller Transaction Manager addRooms() enlist()

25 Beispiel : Ausfall Knoten V Client 1 Flights Hotels Cars Customers RM Workflow Controller Transaction Manager

26 Beispiel : Ausfall Knoten VI Client 1 Flights Hotels Cars Customers RM Workflow Controller Transaction Manager commit() prepare() abort()

27 ToDos Workflow Controller Interface –Frontend für Clients, NICHT modifizieren ! Transaktionsmanager –Interface MUSS modifiziert werden ! Resource Manager –Interface MUSS modifiziert werden ! Fehlertoleranz –TM stirbt bevor commit für eine TA gespeichert –Ein RM stirbt bevor er ein prepared senden kann –Recovery von Fehlern beim TM und RM

28 Workflow Controller Gleiches Interface wie ResourceManager zuzüglich: boolean reserveItinerary( int xid, String custName, List flightNumList, String location, boolean needCar, boolean needRoom ) Weitere Methoden zum Testen z.B. dieRMBeforePrepare() etc.

29 Transaktionsmanager Der Transaktionsmanager koordiniert Transaktionen, an denen mehrere Resource Manager beteiligt sind. Der Workflow Controller reicht, abort(), start(), commit() Aufrufe der Clients direkt an den Transaktionsmanager weiter. Resource Manager benutzen die enlist() Methode, um ihre Teilnahme an einer Transaktion dem Transaktionsmanager bekannt zu machen. Interface des Transaktionsmanager (ist im Codegerüst nicht vorgegeben) : start() commit() abort() enlist()


Herunterladen ppt "Transaktionale Systeme Projektteil B Verteilte Transaktionen, Workflow- und Transaktions-Manager."

Ähnliche Präsentationen


Google-Anzeigen