Kap. 9: Verteilte Transaktionsmechanismen 91 9.1 Einführung 9.2 Transaktionskonzept 93 9.3 Stellenlokale Commit Commit-Verfahren Verfahren 9.4 Das 2-Phasen Commit-Protokoll 95 9.5 X/O X/Open Distributed Di t ib t d Transaction T ti Processing P i © R. Kröger, Hochschule RheinMain Verteilte Systeme 9-1 9.1 Einführung • Neues Problem bei der Entwicklung verteilter Anwendungen – Ausfall von einzelnen Komponenten des verteilten Systems (partial failure property) ⇒ komplexe Fehlersituationen in verteilten Anwendungsprogrammen • Motivation für Transaktionen – Atomare Aktionen als Erweiterung des DB-Tansaktionskonzepts zu allgemeinem Programmierkonstrukt – Reduktion der Komplexität der Anwendungsprogrammierung in Gegenwart von Fehlern und Nebenläufigkeit – Bessere Einsicht in die Wirkungsweise eines Programms – Automatisches Backward Error Recovery, Kombination mit Forward Error Recovery-Verfahren möglich © R. Kröger, Hochschule RheinMain Verteilte Systeme 9-2 9.2 Transaktionskonzept • Eine Transaktion ist die Zusammenfassung einer Menge von Aktionen (Operationen auf log. Betriebsmitteln) mit folgenden Eigenschaften (ACID): – Atomicity = Atomarität im Fehlerfall (Alles-oder-Nichts): » T Transaktion kti entweder t d vollständig ll tä di ausgeführt füh t oder erscheint, als ob nie begonnen » Kein Zwischenzustand zwischen Anfangs- und Endzustand sichtbar – Consistency = Konsistenz: » Allgemein: Erfüllung aller Anwendungs-Constraints g Verhaltens » Erreicht durch Serialisierbarkeit des nebenläufigen (vgl. Datenbanken) (Schwächeres Kriterium als Determiniertheit) – Isolation: » Verhalten jeder Transaktion als ob "allein allein auf der Welt Welt" – Durability= Dauerhaftigkeit (Permanenz der Wirkung): » Wirkung abgeschlossener Transaktionen geht nicht verloren (selbst bei Auftreten aller erlaubten Fehler eines Fehlermodells) © R. Kröger, Hochschule RheinMain Verteilte Systeme 9-3 Bemerkungen 9.2 • Isolierte Behandlung des Abbruchs einzelner Transaktionen – oft als Transaktionseigenschaft angesehen – ist jedoch Konsequenz einer strategischen Entscheidung im Spektrum Recovery ↔ Synchronisation (vgl nicht (vgl. nicht-striktes striktes 2 2-Phasen-Locking) Phasen Locking) – Nicht-isoliertes Recovery führt zu kaskadierenden Aborts und erfordert zur korrekten Behandlung das Halten eines Abhä i k it Abhängigkeitsgraphen h (R (Recovery-Graph) G h) • Transaktionen beinhalten vorgeplante Recovery-Linien © R. Kröger, Hochschule RheinMain Verteilte Systeme 9-4 Lokale / Verteilte Transaktionen • Lokale Transaktion 9.2 • Zustandsdiagramm – Wirkung auf einzelnes Rechensystem beschränkt b i begin active commit abort committed • Verteilte V t ilt T Transaktion kti – Wirkung auf mehreren Stellen eines verteilten Rechensystems © R. Kröger, Hochschule RheinMain aborted ? im weiteren zu entwickeln Verteilte Systeme 9-5 Fehlermodell 9.2 • Fehlermodell beschreibt alle vorhergesehenen Fehler, auf die ein System geordnet reagiert, alle anderen heißen Katastrophen. • Transaktionsfehler (transaction abort): – Zurücksetzen einzelner Transaktionen, z.B. durch » Expliziter Abbruch durch Benutzer pp p g » Fehler im Applikationsprogramm » als Folge einer Deadlockauflösung • Stellenfehler (site failure): – Ausfall eines beteiligten Rechensystems, z.B. durch » Transiente oder permanente Hardware-Fehler (auch Stromausfall) y mit reboot » Betriebssystemabsturz – Alle laufenden Prozesse stürzen ab – Alle Transaktionen im Zustand active gehen in den Zustand aborted über © R. Kröger, Hochschule RheinMain Verteilte Systeme 9-6 Fehlermodell (2) 9.2 • Medienfehler: – Nicht-behebbarer Fehler auf nicht-flüchtigem Speichermedium, Speichermedium das von Transaktionsverarbeitung genutzt wird, z.B. » Magnetplatte (genutzt für Speicherung der log. Daten) » Magnetband M tb d (genutzt ( t t für fü Logging) L i ) – Standardbehandlung durch stabilen Speicher (redundante Speicherung auf mehreren Medien, z.B. Spiegelplatten, RAID, ...) – hier nicht weiter betrachtet • Kommunikationsfehler: – F Fehler hl im i Nachrichtensystem N h i ht t führen füh zum Verlust V l t von Nachrichten – Partitionierung: Zerfall des Netzes in mehrere isolierte Teilnetze © R. Kröger, Hochschule RheinMain Verteilte Systeme 9-7 Flache / Geschachtelte Transaktionen 9.2 • Flache Transaktionen – klassisches Modell aus DBKontext – Transaktion involviert Menge von Objekten (log. (log Betriebsmitteln) – Transaktionen können Objekte gemeinsam nutzen ( (geregelt lt durch d h Concurrency C Control- Mechanismen) TA1 TA2 involvierte Objekte – Transaktionen können nicht geschachtelt werden © R. Kröger, Hochschule RheinMain Verteilte Systeme 9-8 Flache / Geschachtelte Transaktionen (2) 9.2 • Geschachtelte Transaktionen (Nested Transactions) – Eine Transaktion kann (auch zu einem Zeitpunkt) innere Transaktionen (Subtransaktionen) besitzen Top-Level T L l Transaktion – isolierte Zurücksetzbarkeit innerer Transaktionen: Abort einer inneren TA führt zu Exception beim Vater (nicht zu dessen Abbruch!) – Abort einer TA führt zum Abort aller i inneren TAen TA – Commitment relativ zum Vater (endgültig erst mit Commitment der Top-Level TA) TA1 TA11 TA12 TA121 TA122 – Nebenläufigkeitskontrolle auf jeder Schachtelungsebene g © R. Kröger, Hochschule RheinMain Verteilte Systeme 9-9 9.3 Stellenlokale Commit-Verfahren • Verfahren zur lokalen Bereitstellung von Atomarität im Fehlerfall und Permanenz der Wirkung: – Intention Lists (Lampson 1981) – Shadowing (Gray 1981) – Write-Ahead Logging © R. Kröger, Hochschule RheinMain Verteilte Systeme 9-10 Intention Lists 9.3 • Vorgehensweise – Beabsichtigte Veränderungen auf Datenobjekten werden in Liste gesammelt (d.h. Arbeiten auf Kopien der Originaldaten) – Liste wird in stabilen Speicher geschrieben – Entscheidung (committed-aborted) treffen – Falls aborted: Liste verwerfen – Falls committed: Originale der Objekte in nicht-flüchtigem Speicher aktualisieren. • Nach Stellenfehler – Analysieren der Listen in stabilem Speicher – Falls keine Liste vorhanden oder Liste unvollständig ((Stellenfehler beim Schreiben der Liste): ) Transaktion ist aborted und Liste löschen – Falls Liste vollständig: Aktualisieren der Objekte gemäß Liste (idempotent) und abschließend Löschen der Liste © R. Kröger, Hochschule RheinMain Verteilte Systeme 9-11 Shadowing 9.3 • Vorgehensweise – Nichtflüchtiger Speicher als Baumstruktur mit Verweisblöcken (entsprechend UNIXDateisystem) angenommen – After Images aller Blöcke als Shadow ShadowVersion bis zur Wurzel anlegen – Entscheidung (committed-aborted) treffen d durch h atomaren t Pointer-Swap P i t S in i RootR t Block (Schreiben eines Blockes) root atomic pointer swap – Falls aborted: Shadow-Struktur verwerfen – Falls committed: ehemalige OriginalBlöcke freigeben, Shadow-Blöcke sind jjetzt die Originale g • Nach Stellenfehler – Entweder alter Zustand oder neuer Z t d ist Zustand i t etabliert t bli t © R. Kröger, Hochschule RheinMain Verteilte Systeme 9-12 Shadowing (2) 9.3 • Vorteile – Atomarer Zustandswechsel durch Schreiben eines/des Root-Blockes • Nachteile – keine Nebenläufigkeit von Commit-Vorgängen – Physische Anordnung der Datenblöcke zueinander geht durch Commit-Vorgänge Commit Vorgänge verloren, da Shadow-Blöcke Shadow Blöcke aus der Frei Frei-Liste Liste genommen werden müssen. © R. Kröger, Hochschule RheinMain Verteilte Systeme 9-13 Write-Ahead Logging 9.3 • Log-Grundlagen – Log besteht logisch aus Folge von sogenannten Log Records variabler Länge identifiziert durch Log Sequence Number LSN (Byte Offset im Log-Strom analog TCP Sequenznummer) – Log ist gemeinsam genutzt innerhalb eines Knotens – Verkettung von zusammengehörigen Log-Einträgen eines Commit-Vorgangs – Realisierung des Logs in replizierten Dateien (stabiler Speicher) und mehreren Generationen von Log-Files – Übergeordnete Tabelle mit Log-Einträgen Log Einträgen und SQL-Zugriff SQL Zugriff in Datenbanken üblich Blockstruktur des Mediums ... LSN 1000 älter 2000 3800 4000 5000 Schreibrichtung © R. Kröger, Hochschule RheinMain 7000 7200 7400 jünger Verteilte Systeme 9-14 Write-Ahead Logging (2) 9.3 • Schreiben von Log-Einträgen – Nur sequentielles Schreiben der Log Files (hohe Performance) – Gepuffertes Schreiben von Log-Einträgen im Arbeitsspeicher – Forced Write eines Log-Eintrags erzwingt Ablage aller vorangegangenen Log-Einträge (mit kleinerer LSN) und Rückkehr aus der Operation, nachdem Block physich auf dem Medium steht • Lesen von Log-Einträgen – Nur im Fall von Stellenfehlern und evtl. bei Transaktionsfehlern (s u ) (s.u.) • Log-Verkürzung – Log kann logisch beliebig lang werden, aber Restart-Dauer nach Stellenfehler muss begrenzt werden – Nutzung von Checkpoints © R. Kröger, Hochschule RheinMain Verteilte Systeme 9-15 Write-Ahead Logging (3) 9.3 • Nutzung von Log-Einträgen im Rahmen des lokalen Commitments – Log Records einer Transaktion sind untereinander verkettet – Schreiben von Before Images (Undo Records) für alle Objekte, d deren persistenter i t t O Originalzustand i i l t d durch d h die di Transaktion T kti im i Zustand active geändert werden (Update in Place). – Schreiben von After Images (Redo Records) für alle erarbeiteten finalen Objektzustände der Transaktion – Ablegen eines finalen Outcome Records mittels Forced Write: » erzwingt Ablage aller zugehörigen Log-Einträge Log Einträge » erscheint dieser im Log, ist das Commitment vollzogen » kann auch als Flag im letzten Block realisiert sein • Write-Ahead W it Ah d Logging L i Protocol P t l – Gesichertes Schreiben von Log Records vor Modifikation des g persistenten Zustands originalen © R. Kröger, Hochschule RheinMain Verteilte Systeme 9-16 Write-Ahead Logging (4) 9.3 • Behandlung von Transaktionsfehlern – (Eventuell) "Aborted" Aborted Outcome Record erzeugen und ablegen – Falls Before Records geschrieben wurden, deren Inhalte wieder als persistenten Objektzustand etablieren • Behandlung von Stellenfehlern – Lesen des Logs – Für alle nicht abgeschlossenen Transaktionen evtl. evtl vorhandene Before Images etablieren – Für alle Transaktionen mit vorhandenem "Committed" Outcome R Record d das d jeweils j il letzte l t t After Aft Image I aller ll Objekte Obj kt (irgendwann) (i d ) als persistenten Objektzustand etablieren (Idempotenz) © R. Kröger, Hochschule RheinMain Verteilte Systeme 9-17 Write-Ahead Logging (5) 9.3 • Vorteile – Mehrere ineinander verzahnte Commit-Vorgänge können gleichzeitig stattfinden – Hohe I/O-Performance durch Buffering und Sequentielles Schreiben des Logs – Anordnung der Datenblöcke des persistenten Zustands bleibt erhalten (Update in Place) – Parallelisierung des Logs möglich – Nach Stellenfehler und anschließendem Neustart muss nur der Log analysiert werden – Log kann auch von Commit-Protokollen mitgenutzt werden (s.u.) © R. Kröger, Hochschule RheinMain Verteilte Systeme 9-18 9.4 Das 2-Phasen Commit-Protokoll • Commit-Protokolle – dienen dazu, dazu in einer verteilten Umgebung die Commit/AbortEntscheidung einer Menge von Prozessen zu koordinieren – z.B. für Durchsetzung von Atomarität im Fehlerfall und Dauerhaftigkeit für verteilte Transaktionsumgebung – sind Spezialfälle sog. Konsensus-Protokolle (hier: ja/nein) • 2-P-C-Protokoll 2 P C Protokoll – ist das am weitesten verbreitete Protokoll – von hoher praktischer Bedeutung und auch in zahlreichen P d kt enthalten Produkten th lt – im weiteren besprochen • Allgemeinere Theorie – Mehrphasen-Commit-Protokolle (z.B. Skeen, 1981) – schwache / starke Terminierungsbedingungen führen zu bl ki blockierenden d / nichtblockierenden i h bl ki d Commit-Algorithmen C i Al ih © R. Kröger, Hochschule RheinMain Verteilte Systeme 9-19 Eigenschaften eines Commit-Algorithmus • 9.4 Ein Commit-Algorithmus für eine Menge von Prozessen besitzt folgende Eigenschaften: 1. Alle Prozesse, die eine Entscheidung treffen, treffen die gleiche Entscheidung 2 Ei 2. Eine einmal i l getroffene t ff Entscheidung E t h id ist i t bindend bi d d für fü jeden j d Prozess und kann nicht widerrufen werden 3. Nur wenn alle Prozesse für Commit entscheiden, lautet die gemeinsame Entscheidung auf Commit, d.h. auch: sobald ein Prozess auf Abort entscheidet, muss die gemeinsame Entscheidung auf Abort lauten 4. Wenn zu einem Zeitpunkt alle aufgetretenen Fehler repariert sind und hinreichend lange keine neuen Fehler auftreten, erreichen die Prozesse eine gemeinsame Entscheidung. © R. Kröger, Hochschule RheinMain Verteilte Systeme 9-20 Begriffe • 9.4 Fenster der Verwundbarkeit (des Commit-Protokolls) – Zeitspanne zwischen der lokalen Commit Commit-Enscheidung Enscheidung eines Prozesses und Kenntnis der Gesamtentscheidung – wird auch Unsicherheitsperiode des Prozesses (Uncertaincy Period)) g genannt • Blockierendes Protokoll – Protokoll sieht vor, dass ein Prozess die Reparatur eines Fehlers abwarten muss • Unabhängiges Recovery – Prozess kann nach einem Fehler eine Entscheidung treffen, ohne mit it anderen d Prozessen P zu kommunizieren k i i • Teilhaber (Participants) – Prozesse,, die Commit-Protokoll abwickeln • (vgl. auch eLearning-Modul "Verteilte Algorithmen") © R. Kröger, Hochschule RheinMain Verteilte Systeme 9-21 Background • 9.4 Sätze: – Wenn Kommunikationsfehler oder Gesamtsystemfehler möglich sind, gibt es kein Commit-Protokoll, das keinen Prozess blockiert Bemerkung: nicht ausgeschlossen ist die Existenz eines nichtblockierenden Commit-Protokolls, wenn nur einzelne Stellen ausfallen – Kein Commit-Protokoll kann unabhängiges Recovery ausgefallener Prozesse garantieren Bemerkung: Es gibt kein Commit-Protokolls ohne Unsicherheitsperiode für Teilhaber © R. Kröger, Hochschule RheinMain Verteilte Systeme 9-22 Grundlagen des 2-P-C-Protokolls 9.4 • J. Gray, 1978 • Blockierender Commit Commit-Algorithmus Algorithmus mit schwacher Terminierungseigenschaft ( ⇒ treten keine Fehler auf, treffen alle Prozesse irgendwann eine Entscheidung). • Rollen – Teilhaber /Teilnehmer – Koordinator als ausgezeichneter Teilhaber Teilhaber, der Abwicklung des Protokolls steuert Bemerkung: i.d.R. Teilhaber der Ursprungsstelle der Transaktion, d Commit-Vorgang der C it V iinitiiert itii t – Koordinator kennt alle Teilhaber – Teilhaber kennen nur ihren Koordinator, aber sich nicht gegenseitig • Nutzung von jeweils lokalem Log jedes Teilhabers zur Fortschreibung des Zustands des Commit-Vorgangs Commit Vorgangs © R. Kröger, Hochschule RheinMain Verteilte Systeme 9-23 2-P-C-Protokoll • 9.4 Nachrichtenfluss (Normalfall ohne Fehler) K prepare (TID) T1 T2 ... Tn prepared (ok|failed) 1. Phase Abstimmung K 2. Phase Entscheidung commit | abort T1 T2 ... Tn done (optional) K © R. Kröger, Hochschule RheinMain K Koordinator Ti Teilhaber Verteilte Systeme 9-24 2-P-C-Protokoll (2) • 9.4 Zustandsdiagramm des Koordinators begin active K prepare wait decide(ok) abort b t decide(failed) committed aborted commit prepare (TID) Auffordern abort wait Warten auf Antworten T1 Tn prepared lokale Entscheidung des Koordinators K commit | abort Verbreiten Warten auf Bestätigung T1 Tn done (optional) done done © R. Kröger, Hochschule RheinMain Vergessen K Verteilte Systeme 9-25 2-P-C-Protokoll (3) • 9.4 Zustandsdiagramm der Teilhaber begin K active prepare (TID) prepare prepared prepared d ((ok) k) Fenster der Verwundbarkeit prepared d (f (failed) il d) abort b t committed T1 aborted done done © R. Kröger, Hochschule RheinMain Aktionen entsprechend Entscheidung ausführen Ende mitteilen Tn prepared d Warten auf Entscheidung des Koordinators wait commit lokales Vorbereiten K T1 commit | abort b t Tn done (optional) K Verteilte Systeme 9-26 2-P-C-Protokoll (4) • 9.4 Logging des Koordinators K TID: begin (T1 , ..., Tn) prepare p p (TID) ( ) Auffordern Warten auf Antworten entscheidet den Ausgang "forced write" TID: committed TID: aborted T1 Tn prepared Lokale Entscheidung des Koordinators K commit | abort Verbreiten Warten auf Bestätigung T1 Tn done (optional) TID: done © R. Kröger, Hochschule RheinMain Vergessen g K Verteilte Systeme 9-27 2-P-C-Protokoll (5) • 9.4 Logging der Teilhaber TID: begin (coord K) K prepare p p (TID) ( ) TID: after image TID: after image TID: after image "forced write" TID: prepared TID: committed TID: aborted Lokales Vorbereiten Aktionen entsprechend Entscheidung ausführen entsprechend bei einseitigem Abort Ende mitteilen Tn prepared Warten auf Entscheidung des Koordinators ! TID: done © R. Kröger, Hochschule RheinMain T1 K T1 commit | abort Tn done (optional) K Verteilte Systeme 9-28 2-P-C-Protokoll (6) • 9.4 zusammenfassendes Zustandsdiagramm für verteilte Transaktionen begin active prepare neuer Zustand prepared commit abort abort committed © R. Kröger, Hochschule RheinMain aborted Verteilte Systeme 9-29 2-P-C-Protokoll (7) 9.4 • Behandlung von Transaktionsfehlern – Übergang von aktiven Transaktionen in den Zustand aborted – unilaterale Abort-Entscheidung von Koordinator und jedem Teilhaber möglich » Koordinator sendet später abort, auch wenn alle Teilhaber mit prepared geantwortet haben » Teilhaber antworten auf prepare-Request des Koordinators mit prepared (failed) (failed). • Behandlung von Kommunikationsfehlern bei aktiven Transaktionen – Erkennung (wie auch anderer Vorkommnisse) durch Timeouts – Überführung in Transaktionsfehler mit Behandlung wie oben © R. Kröger, Hochschule RheinMain Verteilte Systeme 9-30 2-P-C-Protokoll (8) 9.4 • Beispiel für Abort-Entscheidung des Koordinators K prepare (TID) Auffordern Warten auf Antworten T1 Tn prepared AbortEntscheidung des Koordinators Timeout K abort Verbreiten T1 © R. Kröger, Hochschule RheinMain Tn Verteilte Systeme 9-31 2-P-C-Protokoll (9) 9.4 • Beispiel für Abort-Entscheidung eines Teilhabers K Ti Timeout t prepare (TID) T1 Tn prepared (ok) Lokale Abort-Aktionen schon hier prepared (failed) K abort T1 © R. Kröger, Hochschule RheinMain Tn Verteilte Systeme 9-32 2-P-C-Protokoll (10) 9.4 • Behandlung eines Stellenfehlers des Koordinators – Vorgehensweise abhängig von Information im Log (a) TID: begin (T1 , ..., Tn) ⇒ abort-Entscheidung, Protokoll fortsetzen (b) TID: begin (T1 , ..., Tn) ⇒ wurde vor Stellenfehler bereits entschieden TID: committed TID: aborted (c) Protokoll fortsetzen: sende commit / abort-Nachricht an alle Teilhaber TID: begin (T1 , ..., Tn) TID: committed ⇒ nichts zu tun TID: done © R. Kröger, Hochschule RheinMain Verteilte Systeme 9-33 2-P-C-Protokoll (11) 9.4 • Behandlung eines Stellenfehlers eines Teilhabers – Vorgehensweise ebenfalls abhängig von Information im Log (a) TID: begin (coord K) (b) TID: begin (coord K) ⇒ abort ⇒ abort b t TID: after image TID: after image (c) TID: begin (coord K) ⇒ keine unilaterale Entscheidung möglich TID: after image TID: after image TID: after image Nachfrage bei Koordinator K getDecision(TID) TID: prepared P t k ll fortsetzen Protokoll f t t © R. Kröger, Hochschule RheinMain Verteilte Systeme 9-34 2-P-C-Protokoll (11) 9.4 • Behandlung eines Stellenfehlers eines Teilhabers (2) (d) TID: begin (coord K) TID: after image TID: after image TID: after image TID: prepared ⇒ unabhängiges Recovery möglich lokale commit / abort-Aktionen wiederholen Protokoll fortsetzen TID: committed TID: aborted (e) TID: begin (coord K) ... ⇒ nichts zu tun TID: done © R. Kröger, Hochschule RheinMain Verteilte Systeme 9-35 Erweiterungen 9.4 • Coordinator Migration – Die Koordinator-Rolle wird einem hoch zuverlässigen Rechner übertragen – Damit wird Blockierung der Teilhaber bei Ausfall des Koordinators unwahrscheinlicher • Group Commitment – Gemeinsames Commitment mehrerer Transaktionen – Weniger forced write-Operationen – Durchsatzsteigerung bei geringfügig erhöhter Ausführungszeit d Protokolls des P t k ll • Kooperative Terminierung – Teilhaber kennen sich gegenseitig – Nach Stellenfehler kann Nachfrage bei anderen Teilhabern die Blockierung vermindern, falls jetzt Koordinator ausgefallen ist © R. Kröger, Hochschule RheinMain Verteilte Systeme 9-36 Erweiterungen (2) 9.4 • Presumed Abort / Presumed Commit – Default-Wert für Ausgang der Transaktion angenommen angenommen, wenn kein spezifischer Outcome Record im Log vorhanden ist – Vereinfachungen bei Log-Verkürzung möglich • Dezentrales 2-Phasen-Commit-Protokoll – Kein zentraler Koordinator – Kommunikation der Teilhaber untereinander, untereinander z.b. z b vorteilhaft über Broadcast-Protokoll – Verringert Zeitkomplexität © R. Kröger, Hochschule RheinMain Verteilte Systeme 9-37 9.5 X/Open Distributed Transaction Processing • X/Open – Historisches Industriekonsortium zur Förderung offener Systeme – Bildet 1996 zusammen mit Open Software Foundation (OSF) die Open Group • Modell für Transaktionsverarbeitung in offenen verteilten Umgebungen (OLTP) • Überwindung von Hersteller-spezifischen Lösungen der Transaktionssteuerung • Anwendung des 2-Phasen-Commit-Protokolls • Kommerziell ausgerichtet auf RDBMSe • Problem klassischer lokaler Datenbanksysteme – enge innere Verquickung der verschiedenen Funktionsbereiche – Unterstützung für verteilte Transaktionen erfordert Auftrennung zwischen Prepare-Aktivitäten p und Commit-Entscheidung g – Commit-Entscheidung muss auch extern getroffen werden können © R. Kröger, Hochschule RheinMain Verteilte Systeme 9-38 Architekturüberblick 9.5 • Homogener Fall Verteilte Applikation begin commit abort TX Transaction Manager TM SQL ... XA Resource Manager Resource (RM) Manager Resource (RM) Manager RM SQL ... Resource Manager Resource (RM) Manager Resource (RM) Manager RM entfernter tf t Z Zugriff iff begin commit abort TX XA Transaction Manager TM 2-Phasen-Commit-Protokoll TM-spezifische TM spezifische Variante – RM kapseln log. Betriebsmittel (DB-Tupel, Dateien, Messages, Objekte, ...) – TM kapselt Transaktionssteuerung – für identische TMs, unterschiedliche RMs © R. Kröger, Hochschule RheinMain Verteilte Systeme 9-39 Architekturüberblick (2) 9.5 • Heterogener Fall Verteilte Applikation begin commit abort SQL ... TX XA Transaction Manager SQL ... Resource Manager Resource (RM) Manager Resource (RM) Manager RM TX Resource Manager Resource (RM) Manager Resource (RM) Manager RM XA Transaction Manager entfernter tf t Z Zugriff iff TM A XA+ Communication Manager KM OSI TP Communication Manager KM begin commit abort TM B XA+ 2 P C Variante 2-P-C-Variante mit Coordinator Migration © R. Kröger, Hochschule RheinMain Verteilte Systeme 9-40 Beispiele 9.5 • X/Open DTP-konforme Transaction Manager – Tuxedo » historischer De-Facto-Standard » von USL, jetzt BEA, jetzt Oracle » nur flache Transaktionen – Encina » unterstützt auch g genestete Transaktionen » nutzt OSF DCE » von Transarc (Ausgründung CMU), jetzt eingegliedert in IBM – CICS/6000 » CICS: IBM Host-Standard » Encina für AIX (RS 6000) – NCR Top End © R. Kröger, Hochschule RheinMain Verteilte Systeme 9-41 Beispiele (2) 9.5 • Transaction Manager in CORBA- und J2EE-Produkten – BEA Weblogic: Tuxedo – IONA Orbix: Encina – Heute i.d.R. in Applikationsserver mit integriert • X/Open DTP-konforme Resource Manager (XA-Schnittstelle) – Relationale DBMSe » historisch erstes System mit XA-Schnittstelle: Informix großen DB-Systemen y unterstützt » heute von allen g » selbst bei Microsoft (MS DTC) – Message Queueing Systeme » MQ Series S i » Swift MQ – Dateisysteme » ISAM XA (Gresham Computing) © R. Kröger, Hochschule RheinMain – ... Verteilte Systeme 9-42