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

Tutorial zur HTML-Tabellenauszeichnung (10): Zell-Padding-Attribut CELLPADDING

Unter Zellenabstand versteht man den Abstand zwis...

SSM VUE Axios Detaillierte Erklärung

Inhaltsverzeichnis Wie wird das SQL-Protokoll ang...

Vue+Openlayer verwendet modify, um den gesamten Code des Elements zu ändern

Vue+Openlayer verwendet „modify“, um Elemente zu ...

Konfigurieren von MySQL und Squel Pro auf dem Mac

Als Reaktion auf die Popularität von nodejs haben...

Tutorial zur Verwendung des Hyperlink-Tags in HTML

Die verschiedenen HTML-Dokumente der Website sind...

Spezifische Verwendungsanweisungen für MySQL-Joins

Inhaltsverzeichnis Join-Syntax: 1. InnerJOIN: (In...

Zwei einfache Beispiele für Menünavigationsleisten

Menüleiste Beispiel 1: Code kopieren Der Code lau...

Übersicht über die Zeitkonfiguration unter Linux-System

1. Zeitarten werden unterteilt in: 1. Netzwerkzei...

Docker Detaillierte Abbildungen

1. Einführung in Docker 1.1 Virtualisierung 1.1.1...

Detailliertes Tutorial zur Installation von Ubuntu 19.10 auf Raspberry Pi 4

Da einige Abhängigkeiten von OpenCV beim Ausführe...

Eine detaillierte Einführung in die CSS-Namensspezifikation BEM von QQtabBar

BEM von QQtabBar Zunächst einmal: Was bedeutet BE...