19.11.2013 Aufrufe

Ein Einblick in das Gebiet der Verteilten Datenbanksysteme

Ein Einblick in das Gebiet der Verteilten Datenbanksysteme

Ein Einblick in das Gebiet der Verteilten Datenbanksysteme

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

5.3 Drei-Phasen-Commit(3PC)<br />

<strong>E<strong>in</strong></strong>e Hauptschwäche des 2PC-Protokolls ist die starke Abhängigkeit <strong>der</strong><br />

Agenten vom Koord<strong>in</strong>ator und die damit verbundene Blockierungen bei<br />

e<strong>in</strong>em Ausfall. Als Verbesserung entwickelten D. Skeen und M. Stonebreaker<br />

1983 <strong>in</strong> ihrer Arbiet ”A Formal Model of Crash Recovery <strong>in</strong> a<br />

Distributed System” <strong>das</strong> 3PC-Protokoll, welches <strong>das</strong> Blockadeproblem auf<br />

Kosten e<strong>in</strong>es gesteigerten Aufwands und zwei Annahmen abschwächt.<br />

1. Ke<strong>in</strong>e Partitionierung des Netzwerks(völlig getrennte Bereiche/Cluster)<br />

2. Höchstens K gleichzeitige Rechnerausfälle, bei N Sites mit K < N<br />

Der Abortfall läuft genau wie beim 2PC-Protokoll ab. Erhält <strong>der</strong> Koord<strong>in</strong>ator<br />

nach dem Prepare e<strong>in</strong> Ready von allen beteiligten Agenten, so<br />

verschickt er e<strong>in</strong>e Pre-Commit-Nachricht an alle Agenten, worauf diese<br />

mit e<strong>in</strong>er Pre-Ack-Nachricht antworten müssen. Erhält <strong>der</strong> Koord<strong>in</strong>ator<br />

m<strong>in</strong>destens K Pre-Ack-Nachricht, so trifft er die Entscheidung e<strong>in</strong>es Commits<br />

und verschickt diese nach e<strong>in</strong>er Protokollierung an alle Agenten. Bei<br />

e<strong>in</strong>em Koord<strong>in</strong>ator-Ausfall(z.B. Timeout) während <strong>der</strong> Prozedur muss e<strong>in</strong><br />

neuer Koord<strong>in</strong>ator ermittelt werden. Dieser fragt die Commitzustände <strong>der</strong><br />

verbliebenen Agenten ab und globalisiert e<strong>in</strong>e gefundene Entscheidung<br />

falls e<strong>in</strong>er <strong>der</strong> Beteiligten bereits e<strong>in</strong>e Commit o<strong>der</strong> e<strong>in</strong>e Abort Meldung<br />

vor dem Ausfall erhalten hat. Sollte noch ke<strong>in</strong>er <strong>der</strong> Verbliebenen e<strong>in</strong>e<br />

Entscheidung erhalten haben, aber m<strong>in</strong>destens e<strong>in</strong>er bef<strong>in</strong>det sich im Status<br />

Pre-Commit, dann setzt <strong>der</strong> neue Koord<strong>in</strong>ator den Vorgang mit e<strong>in</strong>er<br />

neuen Serie von Pre-Commit-Nachrichten fort. Falls ke<strong>in</strong>er <strong>der</strong> Agenten<br />

zuvor e<strong>in</strong> Pre-Commit erhalten hat, so entscheidet <strong>der</strong> neue Koord<strong>in</strong>ator<br />

e<strong>in</strong>en Abort und verbreitet diese Entscheidung im Netzwerk. So ist unter<br />

den obigen Vorraussetzung gewährleistet, <strong>das</strong>s gesperrte Resourcen nach<br />

e<strong>in</strong>er bestimmten Zeit wie<strong>der</strong> freigegeben wird und e<strong>in</strong>e Verbesserung im<br />

Vergleich zum 2PC erreicht.<br />

19

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!