Detaillierte Erläuterung des Bereitstellungsprozesses des SEATA-Transaktionsdienstes Docker

Detaillierte Erläuterung des Bereitstellungsprozesses des SEATA-Transaktionsdienstes Docker

1. Erstellen Sie eine Datenbankautorisierungserklärung

> Datenbank seata erstellen;
> gewähre seata_user@'%', identifiziert durch '123455', alles auf seata.*

2. Anweisung zum Erstellen einer Datenbanktabelle

Katze create_seata_table.sql

---------------------------------- 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(96),
  `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;

3. Anweisungen zum Importieren von Tabellen

mysql -useata_user -p seata < create_seata_table.sql

4. FILE.CONF ändert Datenbankverbindungsinformationen

cat /home/seata-server/resources/file.conf
## Transaktionsprotokollspeicher, wird nur im Seata-Server verwendet
speichern {
 ## Speichermodus: Datei, Datenbank, Redis
 Modus = "db"
 ##öffentlicher RSA-Entschlüsselungsschlüssel
 öffentlicher Schlüssel = ""
 ## Dateispeichereigenschaft
 Datei {
  ##Speicherortverzeichnis
  dir = "sessionStore"
  # Branch-Sitzungsgröße. Wenn diese überschritten wird, versuchen Sie zuerst, den Sperrschlüssel zu komprimieren. Wenn diese überschritten wird, werden weiterhin Ausnahmen ausgelöst.
  maxBranchSessionSize = 16384
  # Globe-Sitzungsgröße, bei Überschreitung werden Ausnahmen ausgelöst
  maxGlobalSessionSize = 512
  # Dateipuffergröße, bei Überschreitung neuen Puffer zuweisen
  Dateischreibpuffer-Cachegröße = 16384
  # beim Wiederherstellen der Batch-Lesegröße
  sessionReloadReadSize = 100
  # asynchron, synchron
  FlushDiskMode = asynchron
 }

 ## Datenbankspeichereigenschaft
 db {
  ## die Implementierung von javax.sql.DataSource, wie z. B. DruidDataSource(druid)/BasicDataSource(dbcp)/HikariDataSource(hikari) usw.
  Datenquelle = "Druide"
  ##mysql/oracle/postgresql/h2/oceanbase usw.
  dbTyp = "mysql"
  TreiberKlassenname = "com.mysql.jdbc.Driver"
  ## Wenn Sie MySQL zum Speichern der Daten verwenden, empfehlen wir, rewriteBatchedStatements=true in den JDBC-Verbindungsparameter einzufügen.
  URL = "jdbc:mysql://192.168.56.30:3306/seata?rewriteBatchedStatements=true" Benutzer = "seata_user"
  Passwort = "123455"
  minConn = 5
  maxConn = 100
  globalTable = "globale_Tabelle"
  branchTable = "Zweigtabelle"
  lockTable = "Sperrtabelle"
  Abfragelimit = 100
  maxWartezeit = 5000
 }

 ## Redis Store-Eigenschaft
 redis {
  ## Redis-Modus: Single, Sentinel
  Modus = "Einzeln"
  ## Einzelmodus-Eigenschaft
  einzel {
   Host = "127.0.0.1"
   Port = "6379"
  }
  ## Sentinel-Modus-Eigenschaft
  Wächter {m}
   masterName = ""
   ## wie etwa „10.28.235.65:26379,10.28.235.65:26380,10.28.235.65:26381“
   sentinelHosts = ""
  }
  Passwort = ""
  Datenbank = "0"
  minConn = 1
  maxConn = 10
  maxGesamt = 100
  Abfragelimit = 100
 }
}

5. REGISTRY.CONF ändert die registrierten NACOS-Verbindungsinformationen

cat /home/seata-server/resources/registry.conf
Registrierung {
 # Datei, Nacos, Eureka, Redis, Zk, Konsul, etcd3, Sofa
 Typ = "nacos"
 loadBalance = "ZufälligeLastverteilung"
 loadBalanceVirtualNodes = 10

 nacos
  Anwendung = "es-provider-seata"
  serverAddr = "192.168.56.30:8848"
  Gruppe = "DEFAULT_GROUP"
  Namespace = ""
  Cluster = "Standard"
  Benutzername = "nacos"
  Passwort = "nacos"
 }
 Eureka
  serviceUrl = "http://localhost:8761/eureka"
  Anwendung = "Standard"
  Gewicht = "1"
 }
 redis {
  serverAddr = "localhost:6379"
  db = 0
  Passwort = ""
  Cluster = "Standard"
  Zeitüberschreitung = 0
 }
 zk
  Cluster = "Standard"
  Serveradresse = "127.0.0.1:2181"
  SitzungsTimeout = 6000
  VerbindungsTimeout = 2000
  Benutzername = ""
  Passwort = ""
 }
 Konsul {
  Cluster = "Standard"
  Serveradresse = "127.0.0.1:8500"
  aclToken = ""
 }
 etcd3 {
  Cluster = "Standard"
  Server-Adresse = "http://localhost:2379"
 }
 Sofa
  Serveradresse = "127.0.0.1:9603"
  Anwendung = "Standard"
  Region = "DEFAULT_ZONE"
  Rechenzentrum = "StandardRechenzentrum"
  Cluster = "Standard"
  Gruppe = "SEATA_GROUP"
  AdresseWartezeit = "3000"
 }
 Datei {
  Name = "Datei.conf"
 }
}

Konfiguration {
 # Datei, Nacos, Apollo, ZK, Konsul, etcd3
 Typ = "Datei"

 nacos
  Serveradresse = "127.0.0.1:8848"
  Namespace = ""
  Gruppe = "SEATA_GROUP"
  Benutzername = ""
  Passwort = ""
  Daten-ID = "seataServer.properties"
 }
 Konsul {
  Serveradresse = "127.0.0.1:8500"
  aclToken = ""
 }
 Apollo
  appId = "seata-server"
  ## apolloConfigService wird apolloMeta abdecken
  apolloMeta = "http://192.168.1.204:8801"
  apolloConfigService = "http://192.168.1.204:8080"
  Namespace = "Anwendung"
  apolloAccesskeySecret = ""
  Cluster = "seata"
 }
 zk
  Serveradresse = "127.0.0.1:2181"
  SitzungsTimeout = 6000
  VerbindungsTimeout = 2000
  Benutzername = ""
  Passwort = ""
 }
 etcd3 {
  Server-Adresse = "http://localhost:2379"
 }
 Datei {
  Name = "Datei.conf"
 }
}

6. DOCKER-Bereitstellungsdienst

docker run --name seata-server-latest -p 8091:8091 \
-v /home/seata-server/resources/file.conf:/seata-server/resources/file.conf \ 
-v /home/seata-server/resources/registry.conf:/seata-server/resources/registry.conf \
-v /home/seata-server/logs:/root/logs \
seataio/seata-server:1.3.0

Dies ist das Ende dieses Artikels über den detaillierten Prozess der Bereitstellung des Seata-Transaktionsdienstes Docker. Weitere relevante Inhalte zur Bereitstellung von Seata Docker finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Wie Springboot Cloud Eureka verwendet, um die verteilte Transaktionskomponente Seata zu integrieren
  • Detaillierte Installation und Verwendung von seata-1.4.0 in Springcloud
  • Detaillierte Erläuterung der verteilten Transaktionen SpringCloud-Alibaba-Seata
  • So lösen Sie das Problem, dass Seata die MySQL 8-Version nicht verwenden kann
  • Codeanalyse der verteilten Transaktionsimplementierung von Springcloud Seata
  • SpringCloud Alibaba Seata (Sammlungsausgabe)
  • Detaillierte Erläuterung der verteilten Transaktionslösung von SpringBoot basierend auf Dubbo und Seata
  • Konstruktionsprozessdiagramm für die Springcloud-Seata-Nacos-Umgebung
  • Detaillierte Erläuterung der verteilten Transaktionen von SpringBoot + Dubbo + Seata
  • Ein Artikel zum Verständnis des Implementierungsprinzips von Seata

<<:  Einfache Prinzipien für die Gestaltung des Webseiten-Layouts

>>:  Beispiel für reines CSS zum Ändern des Bildlaufleistenstils des Browsers

Artikel empfehlen

Definieren der Mindesthöhe der Inline-Elementspanne

Das Span-Tag wird häufig beim Erstellen von HTML-...

So wählen Sie alle untergeordneten Elemente aus und fügen ihnen in CSS Stile hinzu

Verfahren: Nehmen wir „less“ im tatsächlichen Pro...

Detaillierte Erklärung der JS-Homologiestrategie und CSRF

Inhaltsverzeichnis Überblick Same-Origin-Policy (...

Der Unterschied zwischen useEffect und useLayoutEffect in React

Inhaltsverzeichnis Voraussetzungen Effekt verwend...

So beschränken Sie das Eingabefeld in HTML auf die Eingabe reiner Zahlen

Beschränken Sie input Eingabefeld auf reine Zahle...

Analyse der Schwierigkeiten im Hot-Standby der MySQL-Datenbank

Ich habe Ihnen zuvor die Konfigurationsmethode fü...

Erläuterung der neuen Funktion von Hadoop 2.X, der Papierkorbfunktion

Durch Aktivieren der Papierkorbfunktion können Si...

Vue-Projekt @change mehrere Parameter, um mehrere Ereignisse zu übergeben

Erstens gibt es nur ein Änderungsereignis. change...

Detailliertes Tutorial zur Installation von mysql8.0 mit dem Linux-Befehl yum

1. Reinigen Sie vor der Installation gründlich rp...

Detaillierter Prozess der SpringBoot-Integration von Docker

Inhaltsverzeichnis 1. Demo-Projekt 1.1 Schnittste...

So kapseln Sie Paging-Komponenten manuell in Vue3.0

In diesem Artikel wird der spezifische Code der m...

Erläuterung der JavaScript-Funktionssyntax

Inhaltsverzeichnis 1. Gewöhnliche Funktionen 2. P...