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

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

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

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

Transaktionale SystemeProjektteil B

Verteilte Transaktionen,Workflow- und

Transaktions-Manager

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

Teil II Organisation

Abgabe des zweiten Teils am 21.06.2007

Bearbeitung in denselben Gruppen wie Teil A

API und Codegerüst nachher im Netz

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

VDB Projekt Teil II

Implementierung eines Workflow Controllers und eines Transaktionsmanagers

Client 1 Client 2 Client n

Flights Hotels Cars Customers

RM RMRMRM

Workflow

Controller

Transaction Manager

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

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

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

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

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

Beispiel: queryFlight() I

• Example #1: 1] xid = wc.start() ;

2] seatsAvailable = wc.queryFlight(xid, “347”);

3] wc.commit(xid) ;

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

Beispiel: queryFlight() II

Client 1

Flights Hotels Cars Customers

RM RMRMRM

WorkflowController

Transaction Manager

start()

start()

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

Beispiel: queryFlight() III

Client 1

Flights Hotels Cars Customers

RM RMRMRM

Workflow

ControllerTransaction Manager

queryFlight()

queryFlight() enlist()

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

Beispiel: queryFlight() IV

Client 1

Flights Hotels Cars Customers

RM RMRMRM

Workflow

ControllerTransaction Manager

commit()

commit()

prepare()

commit()

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

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

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

Beispiel : addFlight() II

Client 1

Flights Hotels Cars Customers

RM RMRMRM

Workflow

Controller

Transaction Manager

start()

start()

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

Beispiel : addFlight() III

Client 1

Flights Hotels Cars Customers

RM RMRMRM

Workflow

Controller

Transaction Manager

queryFlight()

queryFlight() enlist()

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

Beispiel : addFlight() IV

Client 1

Flights Hotels Cars Customers

RM RMRMRM

Workflow

Controller

Transaction Manager

addFlight()

addFlight()

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

Beispiel : addFlight() V

Client 1

Flights Hotels Cars Customers

RM RMRMRM

Workflow

Controller

Transaction Manager

commit()

commit()

prepare()

commit()

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

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

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

Beispiel : Verteilte TA II

Client 1

Flights Hotels Cars Customers

RM RMRMRM

Workflow

Controller

Transaction Manager

start()

start()

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

Beispiel : Verteilte TA III

Client 1

Flights Hotels Cars Customers

RM RMRMRM

Workflow

Controller

Transaction Manager

addCars()

addCars()enlist()

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

Beispiel : Verteilte TA IV

Client 1

Flights Hotels Cars Customers

RM RMRMRM

Workflow

Controller

Transaction Manager

addRooms()

addRooms() enlist()

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

Beispiel : Verteilte TA V

Client 1

Flights Hotels Cars Customers

RM RMRMRM

Workflow

Controller

Transaction Manager

commit()

commit()

prepare()

commit()

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

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

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

Beispiel : Ausfall Knoten II

Client 1

Flights Hotels Cars Customers

RM RMRMRM

Workflow

Controller

Transaction Manager

start()

start()

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

Beispiel : Ausfall Knoten III

Client 1

Flights Hotels Cars Customers

RM RMRMRM

Workflow

Controller

Transaction Manager

addCars()

addCars()enlist()

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

Beispiel : Ausfall Knoten IV

Client 1

Flights Hotels Cars Customers

RM RMRMRM

Workflow

Controller

Transaction Manager

addRooms()

addRooms() enlist()

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

Beispiel : Ausfall Knoten V

Client 1

Flights Hotels Cars Customers

RM RMRMRM

Workflow

Controller

Transaction Manager

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

Beispiel : Ausfall Knoten VI

Client 1

Flights Hotels Cars Customers

RM RMRMRM

Workflow

Controller

Transaction Manager

commit()

commit()

prepare()

abort()

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

ToDo‘s

• 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

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

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.

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

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