Heim  >  Artikel  >  Java  >  Ausführliche Einführung in verteilte Fescar-Transaktionen (Bilder und Text)

Ausführliche Einführung in verteilte Fescar-Transaktionen (Bilder und Text)

不言
不言nach vorne
2019-01-31 11:04:473419Durchsuche

Der Inhalt dieses Artikels ist eine Einführung in die verteilten Fescar-Transaktionen (Bilder und Texte). Ich hoffe, dass er für Sie hilfreich ist.

1. Fescar verteilte Transaktion (Übersicht)

1.1. Fescar ist Alibabas Open-Source-Middleware für verteilte Transaktionen Transaktionsprobleme, die in Microservice-Szenarien auftreten, effizient und ohne Eingriffe in das Unternehmen lösen.

1.2. Die Entwicklungsgeschichte von Fescar

Im Jahr 2014 veröffentlichte das Alibaba-Middleware-Team TXC (Taobao Transaction Constructor), um verteilte Transaktionsdienste für Anwendungen innerhalb der Gruppe bereitzustellen.

Im Jahr 2016 unterzog sich TXC einer Produkttransformation und landete als GTS (Global Transaction Service) in der Alibaba Cloud und wurde zu diesem Zeitpunkt das einzige cloudbasierte verteilte Transaktionsprodukt der Branche in Alibabas öffentlicher Cloud, in der proprietären Cloud-Lösung , begann es, viele externe Kunden zu bedienen.

Seit 2019 hat das Alibaba-Middleware-Team basierend auf der Technologieakkumulation von TXC und GTS das Open-Source-Projekt Fescar (Fast & EaSy Commit And Rollback, FESCAR) gestartet, um gemeinsam mit der Community diese verteilte Transaktionslösung zu entwickeln .

1.3. Ursprüngliche Designabsicht

Kein Eingriff in das Geschäft

Hohe Leistung

1.4. Prinzip und Design

1.4.1. Design Concept Map

Ausführliche Einführung in verteilte Fescar-Transaktionen (Bilder und Text)

    Transaktionskoordinator (TC):
  1. Transaktionskoordinator

    , verwaltet den laufenden Status globaler Transaktionen und ist verantwortlich für Koordinierung und Steuerung von Commit oder Rollback globaler Transaktionen.

  2. Transaktionsmanager (TM):
  3. Kontrolliert die Grenzen der globalen Transaktion

    , ist für die Eröffnung einer globalen Transaktion verantwortlich und initiiert letztendlich eine Globales Commit oder globale Antwort Die Auflösung, die ausgeführt werden soll.

  4. Ressourcenmanager (RM):
  5. Steuerung von Filialtransaktionen

    , verantwortlich für die Filialregistrierung, Statusberichte, den Empfang von Anweisungen vom Transaktionskoordinator und die Steuerung von Filialtransaktionen (lokal). Commit und Rollback.

  6. 1.4.2. Was ist der Unterschied zu XA?

Ausführliche Einführung in verteilte Fescar-Transaktionen (Bilder und Text)

    Der RM der XA-Lösung befindet sich tatsächlich in der
  1. Datenbankschicht

    . Der RM ist im Wesentlichen die Datenbank selbst (durch Bereitstellung). Treiber zur Verwendung durch die Anwendung).

  2. Fescars RM wird als Middleware-Schicht
  3. in Form eines Zweitanbieterpakets auf der Anwendungsseite

    bereitgestellt, ist nicht von der Datenbank selbst abhängig Protokollunterstützung erfordert natürlich nicht, dass die Datenbank das XA-Protokoll unterstützt. Dies ist für eine Microservice-basierte Architektur sehr wichtig: Die Anwendungsschicht muss sich nicht an zwei verschiedene Sätze von Datenbanktreibern für lokale Transaktionen und verteilte Transaktionen anpassen.

  4. Dieses Design beseitigt die Anforderungen der verteilten Transaktionslösung an die
  5. Protokollunterstützung der Datenbank

  6. 1.4.3. Zweistufige Einreichung

1.4.3.1. 2PC-Prozess für XA

    2PC-Prozess für XA

  1. Ausführliche Einführung in verteilte Fescar-Transaktionen (Bilder und Text)

  2. Unabhängig davon, ob die Lösung von Phase2 Commit oder Rollback ist, muss die Sperre der Transaktionsressourcen bis zum Abschluss von Phase2 beibehalten werden, bevor sie freigegeben wird.
  3. Stellen Sie sich ein normal laufendes Unternehmen vor. Es besteht eine hohe Wahrscheinlichkeit, dass am Ende mehr als 90 % der Transaktionen erfolgreich eingereicht werden. Können wir lokale Transaktionen in Phase 1 einreichen? Auf diese Weise kann in mehr als 90 % der Fälle die Sperrhaltezeit der Phase 2 eingespart und die Gesamteffizienz verbessert werden.


  4. 1.4.3.2. 2PC-Prozess von Fescar

Ausführliche Einführung in verteilte Fescar-Transaktionen (Bilder und Text)

  1. Lokale Daten in der Filialtransaktion Die Sperre

    wird von der lokalen Transaktion verwaltet und am Ende der Filialtransaktion Phase1 freigegeben.

  2. Gleichzeitig wird mit dem Ende der lokalen Transaktion auch die
  3. Verbindung

    freigegeben.

  4. Die
  5. globale Sperre

    der Daten in der Filialtransaktion wird auf der Seite des Transaktionskoordinators verwaltet. Wenn das globale Commit der Phase2 aufgelöst wird, kann die globale Sperre aufgehoben werden sofort. Erst wenn ein globales Rollback aufgelöst wird, wird die globale Sperre bis zum Ende von Phase 2 der Verzweigung aufrechterhalten.

  6. Dieses Design reduziert die Sperrzeit von Ressourcen (Daten und Verbindungen) durch Zweigtransaktionen erheblich und bietet so eine Grundlage für die Verbesserung der allgemeinen Parallelität und des Durchsatzes.
  7. 1.4.4 Wie werden Zweigtransaktionen festgeschrieben und zurückgesetzt? (Wichtiger Punkt)

    Zunächst muss die Anwendung
  1. Fescars JDBC-Datenquellen-Proxy

    verwenden, bei dem es sich um Fescars RM handelt

  2. Der JDBC-Datenquellenagent von Fescar analysiert das Geschäfts-SQL und organisiert die Datenspiegelung der Geschäftsdaten vor und nach dem Update in einem Rollback-Protokoll unter Verwendung von lokalen Transaktionen Die ACID-Funktion schreibt Geschäftsdatenaktualisierungen und Rollback-Protokollschreibvorgänge in derselben lokalen Transaktion fest.

  3. Auf diese Weise kann gewährleistet werden, dass jede Aktualisierung der übermittelten Geschäftsdaten über ein entsprechendes Rollback-Protokoll
    Ausführliche Einführung in verteilte Fescar-Transaktionen (Bilder und Text)

  4. Wenn es sich bei der Lösung um ein globales Commit handelt, wurde die Zweigtransaktion zu diesem Zeitpunkt übermittelt und erfordert keine synchrone Koordinationsverarbeitung (nur asynchrones

    Bereinigen des Rollback-Protokolls ist erforderlich), Phase2 kann sehr schnell erledigt werden.

  5. Wenn es sich bei der Lösung um ein globales Rollback handelt, empfängt RM die Rollback-Anfrage vom Koordinator, findet den entsprechenden Rollback-Protokolldatensatz über die XID und die Filial-ID und generiert Feedback über den Rollback-Datensatz. Aktualisieren Sie die SQL und führen Sie sie aus, um das Rollback der Verzweigung abzuschließen.

1.4.5. Mechanismus zur Transaktionsweitergabe

  1. XID ist die eindeutige Kennung einer globalen Transaktion Um die XID einzufügen, wird sie über den Service-Call-Link weitergeleitet und an den Transaktionskontext des Service gebunden. Auf diese Weise registrieren die Datenbankaktualisierungsvorgänge im Service-Link Zweige mit der durch die XID dargestellten globalen Transaktion und werden in diese einbezogen die Gerichtsbarkeit derselben globalen Transaktion.

  2. Basierend auf diesem Mechanismus kann Fescar

    jedes Microservice-RPC-Framework unterstützen. Finden Sie einfach einen Mechanismus in einem bestimmten Framework, der XID transparent weitergeben kann, z. B. Filter + RpcContext von Dubbo.

1.4.6 Das grundlegende Verhaltensmuster von Zweigen

Eine Zweigtransaktion, die Teil der globalen Transaktion ist, enthält zusätzlich zu ihrer eigenen Geschäftslogik 4 Interaktionen mit dem Koordinator Verhalten:

  1. Filialregistrierung: Bevor die Datenoperation der Filialtransaktion durchgeführt wird, muss sie beim Koordinator registriert werden, um die bevorstehende Filialtransaktionsdatenoperation in eine einzubinden Bereits geöffnete globale Transaktion In der Verwaltung können Datenoperationen erst durchgeführt werden, nachdem die Filialregistrierung erfolgreich war.

  2. Statusbericht: Nachdem der Datenvorgang der Filialtransaktion abgeschlossen ist, müssen die Ausführungsergebnisse dem Transaktionskoordinator gemeldet werden.

  3. Einreichung der Filialtransaktion: Beantworten Sie die vom Koordinator ausgegebene Anfrage zur Einreichung der Filialtransaktion und schließen Sie die Einreichung der Filialtransaktion ab.

  4. Branch-Rollback: Reagieren Sie auf die vom Koordinator ausgegebene Branch-Transaktions-Rollback-Anfrage und schließen Sie das Branch-Rollback ab.


    Ausführliche Einführung in verteilte Fescar-Transaktionen (Bilder und Text)

    1.4.7. Verhaltensmodus des AT-Modus-Zweigs

  5. Die Geschäftslogik muss nicht auf den Transaktionsmechanismus und die Interaktion achten Der Prozess zwischen Zweigen und globalen Transaktionen erfolgt automatisch. Führen Sie


    Ausführliche Einführung in verteilte Fescar-Transaktionen (Bilder und Text)

1.4.8 Verhaltensmuster der MT-Musterverzweigung

  1. aus Die Geschäftslogik muss in drei Teile „Vorbereiten/Festschreiben/Rollback“ zerlegt werden, um einen MT-Zweig zu bilden und an der globalen Transaktion teilzunehmen.


    Ausführliche Einführung in verteilte Fescar-Transaktionen (Bilder und Text)

1.4.9. Gemischter Modus

Da die Zweige der AT- und MT-Modi im Verhalten grundsätzlich konsistent sind, sind sie vollständig kompatibel ist,

In einer globalen Transaktion können Zweige von AT und MT gleichzeitig existieren . Auf diese Weise kann der Zweck einer umfassenden Abdeckung von Geschäftsszenarien erreicht werden: Wenn der AT-Modus unterstützt werden kann, verwenden Sie den AT-Modus. Wenn der AT-Modus vorübergehend nicht unterstützt werden kann, verwenden Sie stattdessen den MT-Modus. Darüber hinaus können natürlich auch nicht-transaktionale Ressourcen, die im MT-Modus verwaltet werden, zusammen mit relationalen Datenbankressourcen, die Transaktionen unterstützen, in die gleiche verteilte Transaktionsverwaltung einbezogen werden.

1.5. Vorläufige Versionsplanung

v0.1.0

  • Microservice-Framework-Unterstützung: Dubbo

  • Datenbank Unterstützung: MySQL

  • Annotation basierend auf Spring AOP

  • Transaktionskoordinator: Standalone-Version

v0.5.x

  • Microservice-Framework-Unterstützung: Spring Cloud

  • MT-Modus

  • Unterstützt die Transaktionsanpassung im TCC-Modus

  • Dynamische Konfiguration und Serviceerkennung

  • Transaktionskoordinator: Hochverfügbarkeits-Clusterversion

v0.8.x

  • Metriken

  • Konsole: Überwachung/Bereitstellung/Upgrade/Skalierung/Skalierung

v1.0.0

  • Allgemeine Verfügbarkeit: geeignet für Produktionsumgebung

v1.5.x

  • Datenbankunterstützung: Oracle/PostgreSQL/OceanBase

  • Anmerkung, die nicht auf Spring AOP basiert

  • Optimierter Verarbeitungsmechanismus für Hot Data

  • RocketMQ-Transaktionsnachrichten werden in das globale Transaktionsmanagement eingebunden

  • NoSQL wird in den Anpassungsmechanismus des globalen Transaktionsmanagements eingebunden

  • Unterstützt HBase

  • Unterstützt Redis

v2.0.0

  • Unterstützen Sie XA
    Natürlich legen wir im iterativen Entwicklungsprozess des Projekts größten Wert auf die Stimme der Community. Die Roadmap wird vollständig mit der Community kommuniziert und angepasst rechtzeitig.

1.6. Zusammenfassung

 Nachdem ich die Übersicht gelesen habe, wird deutlich, dass es jedes Microservice-RPC-Framework unterstützt, in dem ich es verteilen möchte Wählen Sie eine der Transaktionslösungen aus. Sie sagen mir, dass Spring Cloud voraussichtlich in der nächsten Version integriert wird. Wenn Sie ein vorübergehender Experte sind, empfehlen Sie eine 1.7. Github-Open-Source-Adresse

https://github.com/alibaba/fescar/

Das obige ist der detaillierte Inhalt vonAusführliche Einführung in verteilte Fescar-Transaktionen (Bilder und Text). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:cnblogs.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen