Freigeben über


Zweiphasencommit

Ein bestimmter Geschäftslogikvorgang kann mehrere Programme umfassen, die auf mehreren Computern ausgeführt werden. In diesem Entwurf gilt die Transaktion erst dann als abgeschlossen, wenn alle beteiligten Programme ihre Ausführungen erfolgreich abgeschlossen haben. Damit diese Programme überprüfen können, ob alle anderen Programme, die Teil der Transaktion sind, ihre Transaktionen abgeschlossen haben, müssen sie das Zweiphasencommit-Protokoll (2PC) verwenden.

Der Begriff Transaktion (oder seine Ableitungen, z. B. transaktional) kann irreführend sein. In vielen Fällen beschreibt der Begriff Transaktion ein einzelnes Programm, das auf einem Mainframecomputer ausgeführt wird, der nicht das 2PC-Protokoll verwendet. In anderen Fällen wird er jedoch verwendet, um einen Vorgang zu bezeichnen, der von mehreren Programmen auf mehreren Computern ausgeführt wird, die das 2PC-Protokoll verwenden.

Das 2PC-Protokoll ist so benannt, da es vor dem Committen des ausgeführten Vorgangs die folgenden beiden Phasen verwendet:

  • Phase 1: Vorbereitung. In dieser Phase informiert jedes der an der Transaktion beteiligten Programme in einer Nachricht den TP-Manager, z. B. den Microsoft Distributed Transaction Coordinator (MS DTC), darüber, dass es bereit und in der Lage ist, seinen Teil des Vorgangs auszuführen. Diese Phase wird auch als Vorbereitung bezeichnet, da die Programme entweder darauf vorbereitet sind, die Änderungen zu committen, oder ein Rollback der Änderungen vorzunehmen. Wenn der TP-Manager eine Bestätigung von jedem der beteiligten Programme erhält, fährt er mit Phase 2 fort.

  • Phase 2: Commit oder Rollback. In dieser Phase weist der TP-Manager jedes der Programme an, für alle Änderungen, die im Rahmen der Transaktion angefordert wurden, einen Commit oder Rollback vorzunehmen. Ein ordnungsgemäß ausgeführter Rollback sollte das System wieder in den ursprünglichen Zustand versetzen.

Hinweis

Der Zustand zwischen Phase 1 und Phase 2 wird als unklarer Zustand bezeichnet. Entwickler, die .NET in ihren Anwendungen verwenden, können entscheiden, welche Teile der Anwendung Zugriff auf ein TP benötigen und welche nicht. TI erweitert diese Auswahl auch auf den Mainframe, indem Aufrufe verarbeitet werden, die Transaktionen erfordern, und Aufrufe, die dies nicht erfordern. Für Anwendungen, die eine vollständige Integration zwischen Windows-basierten Zweiphasencommit- und mainframebasierten Synchronisierungsebene 2-Transaktionen erfordern, bietet TI alle erforderlichen Funktionen. Dabei setzt TI nicht voraus, dass Sie die Clientanwendung ändern, platziert keinen ausführbaren Code auf dem Mainframe und ändert Mainframe-TPs höchstens geringfügig. Die Clientanwendung muss nicht zwischen der TI-Komponente und anderen Komponentenverweisen unterscheiden.

Die folgende Abbildung zeigt, wie eine Windows-basierte Clientanwendung implizit den Microsoft Distributed Transaction Coordinator (DTC) verwendet, um den Zweiphasencommit einer verteilten Transaktion unter Einbeziehung von SQL Server und einem CICS TP zu koordinieren. DTC koordiniert 2PC-Transaktionen.

Abbildung: Eine Clientanwendung, die Transaction Integrator und DTC verwendet, um einen zweistufigen Commit zwischen SQL Server und einer CICS-Anwendung zu koordinieren.
Clientanwendung verwendet Transaction Integrator und DTC zum Koordinieren eines Zweiphasencommits zwischen SQL Server und einer CICS-Anwendung

Hinweis

Transaction Integrator unterstützt nur 2PC, wenn eine Verbindung mit einem Mainframe über LU 6.2 (APPC) mit von Windows initiierter Verarbeitung hergestellt wird. Beim direkten Herstellen einer Verbindung über TCP/IP ist keine 2PC-Unterstützung über TI verfügbar.

Clientanwendung mit TI und DTC

Transaktionen mit Zweiphasencommit (2PC) umfassen eine Reihe von Komponenten. Um Transaction Integrator (TI) erfolgreich verwenden zu können, müssen Sie die folgenden 2PC-Komponenten und die Terminologie kennen:

Synchronisierungspunkte auf Ebene 2
TPs können miteinander interagieren, indem sie das LU6.2-Protokoll auf einer von drei Synchronisierungsebenen verwenden: Synchronisierungsebene 0, Synchronisierungsebene 1 oder Synchronisierungsebene 2. Nur eine dieser drei Synchronisierungsebenen, Synchronisierungsebene 2, verwendet das 2PC-Protokoll. Synchronisierungsebene 0 weist keine Nachrichtenintegrität auf, während Synchronisierungsebene 1 eingeschränkte Datenintegrität unterstützt.

TP-Manager
Der Transaktionsprogramm-Manager (TP) ist ein Systemdienst, der das Ergebnis von Transaktionen koordiniert, um Unteilbarkeit zu erreichen. Die TP-Manager stellen sicher, dass die Ressourcen-Manager eine konsistente Entscheidung darüber treffen, ob für die Transaktion ein Commit oder ein Abbruch ausgeführt werden soll. Der TP-Manager für Windows ist MS DTC.

Neusynchronisierungsdienst
Der LU6.2 Resync Service ist eine Komponente von Host Integration Server, die mit MS DTC arbeitet, um eine automatische Wiederherstellung in einen konsistenten Zustand aufgrund von Fehlern an jedem Punkt in einer 2PC-Transaktion durchzuführen. Der LU6.2-Resync-Dienst wird standardmäßig installiert, wenn Host Integration Server installiert wird.

Ressourcen-Manager
Der Ressourcen-Manager ist ein Systemdienst, der dauerhafte Daten verwaltet. Serveranwendungen verwenden Ressourcen-Manager, um den dauerhaften Zustand der Anwendung zu verwalten, z  B. eine Aufzeichnung des verfügbaren Bestands, ausstehende Bestellungen und Debitoren. RMs arbeiten mit dem Transaktions-Manager zusammen, um der Anwendung (mithilfe des 2PC-Protokolls) Unteilbarkeit und Isolation zu garantieren. Microsoft SQL Server™ und TI sind Beispiele für Ressourcen-Manager.

Weitere Informationen

Windows-Transaktionen im Vergleich zu Mainframetransaktionen
Onlinetransaktionsverarbeitung