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

Grafisches Tutorial zur Installation von MySQL 5.5 unter Win7

Die MySQL-Installation ist relativ einfach. Norma...

Zusammenfassung der praktischen Methoden von CSS3 (empfohlen)

1. Abgerundeter Rand: CSS- CodeInhalt in die Zwis...

MySQL-Passwort ist korrekt, aber keine lokale Anmeldung möglich -1045

MySQL-Passwort ist korrekt, aber keine lokale Anm...

jQuery Canvas generiert ein Poster mit einem QR-Code

In diesem Artikel wird der spezifische Code zur V...

So zeigen Sie JSON-Daten in HTML an

Hintergrund: Manchmal müssen wir JSON-Daten direk...

Beispiel für die Bereitstellung von MySQL 8.0 mit Docker

1. Informationen zur Installation von Docker find...

HTML-Beispielcode zur Implementierung des Tab-Wechsels

Tab-Umschalten ist auch eine gängige Technologie ...

So installieren Sie Django in einer virtuellen Umgebung unter Ubuntu

Führen Sie die folgenden Vorgänge im Ubuntu-Befeh...

MySQL 8.0 MIT Abfragedetails

Inhaltsverzeichnis Informationen zu WITH-Abfragen...