Eine detaillierte Einführung in die Bereitstellung von Seata Docker mit hoher Verfügbarkeit

Eine detaillierte Einführung in die Bereitstellung von Seata Docker mit hoher Verfügbarkeit

Version

1.4.2
Offizielle Dokumentation
Dockerhub

Start-up

Geben Sie den Speicherort der Konfigurationsdatei /root/seata-config/registry.conf über die Umgebungsvariable SEATA_CONFIG_NAME an

docker run --name seata-server \
        -p 8091:8091 \
        -e SEATA_CONFIG_NAME=Datei:/root/seata-config/registry \ 
        -v /Benutzer/seata/config:/root/seata-config \
        seataio/seata-server

Konfigurationsdateien

Um eine hohe Verfügbarkeit zu erreichen, müssen Sie sich auf das Registrierungscenter, das Konfigurationscenter und die Datenbank verlassen können.
registry.conf

Registrierung {
  Typ = "nacos"

  nacos
    Anwendung = "Seata-Server"
    serverAddr = "192.168.199.2"
    Namespace = "Test"
    Gruppe = "SEATA_GROUP"
    Cluster = "Standard"
    Benutzername = ""
    Passwort = ""
  }
}

Konfiguration {
  Typ = "nacos"  
  nacos
    serverAddr = "192.168.199.2"
    Namespace = "Test"
    Gruppe = "SEATA_GROUP"
    Benutzername = ""
    Passwort = ""
  }
}

NACOS-Konfiguration

Hinweis: Wenn Sie die Nacos-Konfiguration verwenden, müssen Sie für jedes Konfigurationselement unter der entsprechenden Gruppe (SEATA_GROUP) Textwerte konfigurieren, anstatt eine Eigenschaftendatei mit allen Konfigurationen zu erstellen. Sie können das Skript im offiziellen Quellcode verwenden, um alle verfügbaren Konfigurationsreferenzen zu importieren

1. Verwenden einer Datenbank

store.mode=db
store.db.datasource=Druide
store.db.dbType=mysql
store.db.driverClassName=com.mysql.jdbc.Driver
store.db.url=jdbc:mysql://192.168.199.2:3306/seata?useUnicode=true&rewriteBatchedStatements=true
store.db.Benutzer=root
store.db.password=123456

Erstellen einer Datenbank

Skript zur Datenbankerstellung

---------------------------------- Das Skript, das verwendet wird, wenn der StoreMode „db“ ist ---------------------------------
-- die Tabelle zum Speichern von GlobalSession-Daten
TABELLE ERSTELLEN, WENN `global_table` NICHT VORHANDEN IST
(
    `xid` VARCHAR(128) NICHT NULL,
    `Transaktions-ID` BIGINT,
    `status` TINYINT NICHT NULL,
    `Anwendungs-ID` VARCHAR(32),
    `Transaktionsservicegruppe` VARCHAR(32),
    `Transaktionsname` VARCHAR(128),
    `Zeitüberschreitung` INT,
    `begin_time` BIGINT,
    `Anwendungsdaten` VARCHAR(2000),
    `gmt_create` DATETIME,
    `gmt_modified` DATETIME,
    PRIMÄRSCHLÜSSEL (`xid`),
    SCHLÜSSEL `idx_gmt_modified_status` (`gmt_modified`, `status`),
    SCHLÜSSEL `idx_transaction_id` (`Transaktions-ID`)
) ENGINE = InnoDB
  STANDARD-ZEICHENSATZ = utf8;

-- die Tabelle zum Speichern von BranchSession-Daten
TABELLE ERSTELLEN, WENN `branch_table` NICHT VORHANDEN IST
(
    `branch_id` BIGINT NICHT NULL,
    `xid` VARCHAR(128) NICHT NULL,
    `Transaktions-ID` BIGINT,
    `Ressourcengruppen-ID` VARCHAR(32),
    `Ressourcen-ID` VARCHAR(256),
    `Zweigtyp` VARCHAR(8),
    `status` TINYINT,
    `client_id` VARCHAR(64),
    `Anwendungsdaten` VARCHAR(2000),
    `gmt_create` DATETIME(6),
    `gmt_modified` DATETIME(6),
    PRIMÄRSCHLÜSSEL (`branch_id`),
    SCHLÜSSEL `idx_xid` (`xid`)
) ENGINE = InnoDB
  STANDARD-ZEICHENSATZ = utf8;

- die Tabelle zur Speicherung der Sperrdaten
TABELLE ERSTELLEN, WENN `lock_table` NICHT VORHANDEN IST
(
    `row_key` VARCHAR(128) NICHT NULL,
    `xid` VARCHAR(128),
    `Transaktions-ID` BIGINT,
    `branch_id` BIGINT NICHT NULL,
    `Ressourcen-ID` VARCHAR(256),
    `Tabellenname` VARCHAR(32),
    `pk` VARCHAR(36),
    `gmt_create` DATETIME,
    `gmt_modified` DATETIME,
    PRIMÄRSCHLÜSSEL (`row_key`),
    SCHLÜSSEL `idx_branch_id` (`branch_id`)
) ENGINE = InnoDB
  STANDARD-ZEICHENSATZ = utf8;

Ausnahmebehandlung

1. Der Client meldet einen Fehler: Daten zu lang für Spalte „application_id“

io.seata.core.exception.TmTransactionException: TransactionException[Beginn der globalen Anforderung fehlgeschlagen. xid=null, msg=Datenkürzung: Daten zu lang für Spalte „application_id“ in Zeile 1]
bei io.seata.tm.DefaultTransactionManager.begin(DefaultTransactionManager.java:55) ~[seata-all-1.3.0.jar:1.3.0]
bei io.seata.tm.api.DefaultGlobalTransaction.begin(DefaultGlobalTransaction.java:104) ~[seata-all-1.3.0.jar:1.3.0]
bei io.seata.tm.api.TransactionalTemplate.beginTransaction(TransactionalTemplate.java:175) ~[seata-all-1.3.0.jar:1.3.0]

Die Standardlänge des Felds global_table.application_id in der Seata-Datenbank ist varchar(32). Wenn die Client-Anwendungs-ID zu lang ist, wird dieser Fehler gemeldet. Sie können den Feldtyp manuell ändern, um die Länge zu erhöhen.

Dies ist das Ende dieses Artikels über die Bereitstellung von Seata Docker mit hoher Verfügbarkeit. Weitere relevante Inhalte zur Bereitstellung von Seata Docker finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Detaillierte Erläuterung des Bereitstellungsprozesses des SEATA-Transaktionsdienstes Docker
  • Docker stellt eine MySQL-Remoteverbindung bereit, um 2003-Probleme zu lösen
  • Implementierung eines Docker-Compose-Bereitstellungsprojekts basierend auf MySQL8

<<:  So ändern Sie die feste Positionierung untergeordneter Elemente durch CSS3-Transformation in eine absolute Positionierung

>>:  Basiswissen: Was bedeutet http vor einer Website-Adresse?

Artikel empfehlen

Detaillierte Erklärung der reinen SQL-Anweisungsmethode basierend auf JPQL

JPQL steht für Java Persistence Query Language. B...

Detaillierte Erklärung und Zusammenfassung der URL zur Datenbankverbindung

Detaillierte Erklärung und Zusammenfassung der UR...

Detaillierte Erklärung zum Einfügen gängiger Nginx-Befehle in Shell-Skripte

1. Erstellen Sie einen Ordner zum Speichern von N...

Natives JS zum Erzielen von Jalousie-Spezialeffekten

In diesem Artikel wird ein Jalousie-Spezialeffekt...

Grundlegende Fähigkeiten zum Entwerfen von Web-Frontend-Schnittstellen

[Erforderlich] Benutzeroberfläche PhotoShop/Feuer...

Detailliertes Tutorial zur schnellen Installation von Zookeeper in Docker

Docker: Zookeeper schnell installieren Ich habe Z...

So verwenden Sie pdf.js zur Vorschau von PDF-Dateien in Vue

Wenn wir auf der Seite eine PDF-Vorschau anzeigen...

Allgemeine Datumsvergleichs- und Berechnungsfunktionen in MySQL

Implementierung des Zeitvergleichs in MySql unix_...

Einführung in verschiedene Möglichkeiten zur Einführung von CSS in HTML

Inhaltsverzeichnis 1. CSS-Stile direkt in HTML-Ta...

30 Tipps zum Schreiben von HTML-Code

1. HTML-Tags immer schließen Im Quellcode der vor...

Implementierungsmethode der rekursiven MySQL-Baumabfrage

Vorwort Bei baumstrukturierten Daten in der Daten...