Was ist MS DTC (Microsoft Distributed Transaction Coordinator)?

5

Ich versuche zu verstehen, was MS DTC (The Microsoft Distributed Transaction Coordinator) ist. Ich mag es, dass dies ein Koordinator für COM + -Transaktionen ist, aber ich verstehe immer noch nicht, was es ist. Weiß jemand Bescheid?

Diogo
quelle

Antworten:

8

Es ist schwierig, Bewerbungen zu schreiben. Mit der Zeit entdecken wir Konzepte und Techniken, mit denen wir große Anwendungen erstellen können. Durch Modularität oder Strukturierung einer Anwendung als unabhängige Module können Sie komplexe Systeme aus einfacheren Teilen erstellen und die Software wiederverwenden. Objektorientierte Konzepte und das Microsoft® Component Object Model (COM) bieten eine Technik, mit der Sie modulare Anwendungen schreiben können. Wenn eine Anwendung als Komponenten strukturiert ist, können sich die einzelnen Teile auf einem einzelnen Computer befinden oder sie können mithilfe von interagieren Remoteprozeduraufrufe über ein Netzwerk. Komponenten bieten also sowohl Modularität als auch natürliche Verteilung.

Das Strukturieren einer Anwendung in unabhängige Komponenten kann das Problem des Verwaltens der Komponenten verursachen. Monolithische Programme schlagen fehl und werden als Einheit neu gestartet. Bei einem modularen System darf der Ausfall einer Komponente die anderen jedoch nicht beschädigen. Es muss eine Möglichkeit geben, Fehler zu isolieren und die Fehlerausbreitung zu begrenzen. Transaktionen ermöglichen eine modulare Ausführung und vereinfachen und automatisieren so die Fehlerbehandlung. Sie stellen ein einfaches konzeptionelles Ausführungsframework für Implementierer und Benutzer bereit.

Der Benutzer betrachtet eine Transaktion als ein einzelnes Änderungsereignis, das entweder eintritt oder nicht eintritt. Implementierer betrachten eine Transaktion als einen Programmierstil, mit dem sie Module schreiben können, die an verteilten Berechnungen teilnehmen können. Angenommen, Sie möchten Geld von einem Bankkonto auf ein anderes überweisen. Die Implementierer und die Benutzer möchten sicherstellen, dass sich entweder beide Konten oder keine ändern. Es ist schwierig, dies in einem verteilten System zum Laufen zu bringen - Computer können ausfallen und Nachrichten können verloren gehen. Transaktionen bieten die Möglichkeit, eine Reihe von Operationen in einer atomaren Ausführungseinheit zu bündeln.

Die atomare Alles-oder-Nichts-Eigenschaft ist nicht neu: Sie erscheint während des gesamten Lebens. Wenn Sie beispielsweise einen Vertrag abschließen, koordiniert ein Treuhänder die Transaktion: Der Treuhänder sammelt die Unterschriften aller Vertragsparteien. Der Vertrag ist endgültig, wenn der Treuhänder bekannt gibt, dass alle unterschrieben haben. Ein Minister, der eine Trauung durchführt, fragt zuerst die Braut und den Bräutigam: "Nehmen Sie diese Person als Ihren Ehepartner?" Wenn sie beide mit "Ja" antworten, erklärt der Minister, dass sie verheiratet sind. Ein Regisseur eines Filmsets fragt zuerst: "Fertig am Set?" Wenn alle mit Ja antworten, ruft der Direktor "Action!" Ein Steuermann auf einem Segelboot, der sich auf das Wenden vorbereitet, fragt die Besatzung: "Bereit?" Wenn sie alle mit Ja antworten, ruft der Steuermann: "Helm ist a'lee!" und dreht das Boot.

Diese Szenarien veranschaulichen das Grundprinzip einer Transaktion: Mehrere unabhängige Einheiten müssen zustimmen. Wenn eine Partei nicht einverstanden ist, ist das Geschäft nicht zustande gekommen. Sobald sie einverstanden sind, kann die Transaktion stattfinden. Der Microsoft Distributed Transaction Coordinator (MS DTC) führt diese Transaktionskoordinierungsrolle für die anderen Komponenten der COM-Architektur aus. In der MS DTC-Terminologie wird der Director als Transaktionsmanager bezeichnet. Die Teilnehmer an der Transaktion, die durch Transaktionen geschützte Ressourcen wie relationale Datenbanken implementieren, werden als Ressourcenmanager bezeichnet. Eine Anwendung startet eine Transaktion, indem sie die BeginTransaction-Methode des Transaktionsmanagers aufruft. Dadurch wird ein Transaktionsobjekt erstellt, das die Transaktion darstellt. Die Anwendung ruft dann die Ressourcenmanager auf, um die Arbeit der Transaktion zu erledigen.

Der erste Aufruf der Anwendung an jeden Ressourcenmanager identifiziert die aktuelle Transaktion der Anwendung. Wenn die Anwendung beispielsweise eine relationale Datenbank verwendet, ruft sie die ODBC-Schnittstelle auf, die das Transaktionsobjekt mit der ODBC-Verbindung verknüpft. Danach werden alle über diese Verbindung getätigten Datenbankaufrufe im Namen der Transaktion ausgeführt, bis die Transaktion beendet ist.

Wenn ein Ressourcenmanager zum ersten Mal im Auftrag einer Transaktion arbeitet, trägt er sich in die Transaktion ein, indem er den Transaktionsmanager aufruft. Während des Transaktionsfortschritts verfolgt der Transaktionsmanager jeden der in der Transaktion eingetragenen Ressourcenmanager.

In der Regel schließt die Anwendung die Transaktion mit einer Commit-Transaktionsmethode ab. Wenn die Anwendung nicht in der Lage ist, die Anwendung abzuschließen, wird die Abort-Transaktionsmethode aufgerufen, die die Aktionen der Transaktion rückgängig macht. Wenn die Anwendung fehlschlägt, bricht MS DTC die Transaktion ab.

Wenn die Anwendung die Transaktion erfolgreich abgeschlossen hat, ruft sie den MS DTC auf, um die Transaktion festzuschreiben. MS DTC durchläuft dann ein zweiphasiges Festschreibungsprotokoll, um alle eingesetzten Ressourcenmanager zum Festschreiben zu bewegen. Das zweiphasige Festschreibungsprotokoll stellt sicher, dass alle Ressourcenmanager die Transaktion festschreiben oder alle abbrechen. In der ersten Phase fragt der MS DTC jeden Ressourcenmanager, ob er bereit ist, ein Commit durchzuführen. Wenn alle Teilnehmer Ja sagen, sendet MS DTC in der zweiten Phase die Festschreibungsnachricht an alle von ihnen. Wenn ein Teil der Transaktion fehlschlägt, ein Ressourcenmanager nicht auf die Vorbereitungsanforderung reagiert oder ein Ressourcenmanager mit Nein antwortet, benachrichtigt MS DTC alle Ressourcenmanager, dass die Transaktion abgebrochen wurde.

Transaktionsmanager sind ein wichtiger Bestandteil der meisten Datenbanksysteme. Transaktionsmanager sind auch ein optionaler Bestandteil einiger Betriebssysteme. Microsoft ist der Ansicht, dass Transaktionen für verteilte Anwendungen unabdingbar sind. Transaktionen bieten eine modulare Ausführung, die die modulare Programmierung von COM ergänzt. Daher implementierte Microsoft eine Transaktionsverwaltungssoftware für Microsoft® Windows® 95- und Microsoft® Windows NT®-Betriebssysteme.

Die Kombination des Transaktionskonzepts mit COM erforderte Innovation. Für die Installation und Verwaltung herkömmlicher Transaktionssysteme waren erhebliche Kenntnisse erforderlich. Die Herausforderung bei der Integration von MS DTC in das Betriebssystem von Microsoft bestand darin, Installation, Verwaltung und Verwendung zu automatisieren. Viele der Konzepte und Techniken mussten für die neuen Client / Server-, objektorientierten und visuellen Verwaltungsumgebungen neu erfunden werden.

In der ersten Version arbeitet MS DTC mit einem Ressourcenmanager: Microsoft® SQL Server ™. Es funktioniert auch mit mehreren Transaktionsverarbeitungsmonitoren, einschließlich Encina®, Top End® und TUXEDO®. MS DTC implementiert die OLE-Transaktionsschnittstellen. Alle OLE-Transaktionsschnittstellen sind öffentlich, sodass jeder Ressourcenmanager zu einem OLE-Transaktionsressourcenmanager werden kann. Zukünftig werden Microsoft und andere Softwareunternehmen weitere Transaktionsressourcen-Manager wie verteilte Objektsysteme, Transaktionsdateisysteme, Transaktionswarteschlangensysteme und Workflow-Management-Systeme hinzufügen.

Die ACID-Eigenschaften

Transaktionen stellen die ACID-Eigenschaften bereit.

Atomarität Eine Transaktion wird entweder festgeschrieben oder abgebrochen. Wenn eine Transaktion festgeschrieben wird, bleiben alle ihre Auswirkungen erhalten. Wenn es abbricht, werden alle seine Effekte rückgängig gemacht. Beispielsweise wird beim Umbenennen eines Objekts der neue Name erstellt und der alte Name gelöscht (Festschreiben) oder nichts geändert (Abbrechen).

Konsistenz Eine Transaktion ist eine korrekte Transformation des Systemstatus. Es bewahrt die staatlichen Invarianten. Wenn Sie beispielsweise ein Element zu einer doppelt verknüpften Liste hinzufügen, werden alle vier Vorwärts- und Rückwärtszeiger aktualisiert.

Isolierung Gleichzeitige Transaktionen werden von den Aktualisierungen anderer unvollständiger Transaktionen isoliert. Diese Updates stellen keinen konsistenten Status dar. Diese Eigenschaft wird häufig als Serialisierbarkeit bezeichnet. Beispielsweise wird bei einer zweiten Transaktion, die die im Konsistenzbeispiel erwähnte doppelt verknüpfte Liste durchläuft, die Liste vor oder nach dem Einfügen angezeigt, es werden jedoch nur vollständige Änderungen angezeigt.

Haltbarkeit Sobald eine Transaktion festgeschrieben wurde, bleiben ihre Auswirkungen auch bei Systemfehlern bestehen. Nach der Umbenennung im Atomicity-Beispiel erhält das Objekt beispielsweise den neuen Namen, auch wenn das System ausfällt und direkt nach Abschluss des Commits neu startet.

Die Anwendung muss entscheiden, was Konsistenz ist, und die Berechnung mit den Transaktionsmethoden BeginTransaction und Commit einschränken, um diese konsistenten Transformationen einzugrenzen. Transaktionsressourcen-Manager bieten konsistente, isolierte und dauerhafte Transformationen der von ihnen verwalteten Objekte. MS DTC verwaltet Transaktionen mit mehreren Ressourcenmanagern, die möglicherweise auf mehrere Computer verteilt sind. MS DTC erstellt Transaktionsobjekte, verfolgt die Migration von Transaktionen zwischen Ressourcenmanagern und implementiert das Zwei-Phasen-Festschreibungsprotokoll, um diese Transaktionen atomar und dauerhaft zu machen.

Informationsquelle

Siehe auch http://en.wikipedia.org/wiki/Distributed_Transaction_Coordinator

Und http://www.microsoft.com/sqlserver/en/us/default.aspx

Moab
quelle