Heim  >  Artikel  >  Java  >  Was ist die Bereitstellungs- und Integrationsmethode von Java Seata?

Was ist die Bereitstellungs- und Integrationsmethode von Java Seata?

WBOY
WBOYnach vorne
2023-05-14 14:55:06704Durchsuche

Bereitstellung und Integration von Seata

1. Stellen Sie den tc-Server von Seata bereit

1) Herunterladen

Zuerst müssen wir das Seata-Server-Paket herunterladen

java seata部署和集成的方法是什么

2) Entpacken

Entpacken Sie dieses Zip-Paket in einem nicht- Chinesisches Verzeichnis, seine Verzeichnisstruktur ist wie folgt:

java seata部署和集成的方法是什么

3) Ändern Sie die Konfiguration

Ändern Sie die Datei Registry.conf im Verzeichnis conf:

java seata部署和集成的方法是什么

Der Inhalt ist wie folgt:

registry {
  # tc服务的注册中心类,这里选择nacos,也可以是eureka、zookeeper等
  type = "nacos"

  nacos {
    # seata tc 服务注册到 nacos的服务名称,可以自定义
    application = "seata-tc-server"
    serverAddr = "127.0.0.1:8848"
    group = "DEFAULT_GROUP"
    namespace = ""
    cluster = "SH"
    username = "nacos"
    password = "nacos"
  }
}

config {
  # 读取tc服务端的配置文件的方式,这里是从nacos配置中心读取,这样如果tc是集群,可以共享配置
  type = "nacos"
  # 配置nacos地址等信息
  nacos {
    serverAddr = "127.0.0.1:8848"
    namespace = ""
    group = "SEATA_GROUP"
    username = "nacos"
    password = "nacos"
    dataId = "seataServer.properties"
  }
}
4) Hinzufügen Konfiguration in Nacos

Besondere Aufmerksamkeit: Um Clustern von TC-Diensten die gemeinsame Nutzung von Konfigurationen zu ermöglichen, haben wir Nacos als einheitliches Konfigurationszentrum ausgewählt. Daher muss die Serverkonfigurationsdatei „seataServer.properties“ in Nacos konfiguriert werden.

Das Format ist wie folgt:

java seata部署和集成的方法是什么

Der Konfigurationsinhalt ist wie folgt:

# 数据存储方式,db代表数据库
store.mode=db
store.db.datasource=druid
store.db.dbType=mysql
store.db.driverClassName=com.mysql.jdbc.Driver
store.db.url=jdbc:mysql://127.0.0.1:3306/seata?useUnicode=true&rewriteBatchedStatements=true
store.db.user=root
store.db.password=123
store.db.minConn=5
store.db.maxConn=30
store.db.globalTable=global_table
store.db.branchTable=branch_table
store.db.queryLimit=100
store.db.lockTable=lock_table
store.db.maxWait=5000
# 事务、日志等配置
server.recovery.committingRetryPeriod=1000
server.recovery.asynCommittingRetryPeriod=1000
server.recovery.rollbackingRetryPeriod=1000
server.recovery.timeoutRetryPeriod=1000
server.maxCommitRetryTimeout=-1
server.maxRollbackRetryTimeout=-1
server.rollbackRetryTimeoutUnlockEnable=false
server.undo.logSaveDays=7
server.undo.logDeletePeriod=86400000

# 客户端与服务端传输方式
transport.serialization=seata
transport.compressor=none
# 关闭metrics功能,提高性能
metrics.enabled=false
metrics.registryType=compact
metrics.exporterList=prometheus
metrics.exporterPrometheusPort=9898

Die Datenbankadresse, der Benutzername und das Passwort müssen an Ihre eigenen Datenbankinformationen angepasst werden.

5) Datenbanktabellen erstellen

Besonderer Hinweis: Wenn der tc-Dienst verteilte Transaktionen verwaltet, muss er transaktionsbezogene Daten in der Datenbank aufzeichnen. Sie müssen diese Tabellen im Voraus erstellen.

Erstellen Sie eine neue Datenbank mit dem Namen „seata“ und führen Sie die im Vorkursmaterial bereitgestellte SQL-Datei aus:

java seata部署和集成的方法是什么

Diese Tabellen zeichnen hauptsächlich globale Transaktionen, Zweigstellentransaktionen und globale Sperrinformationen auf:

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- 分支事务表
-- ----------------------------
DROP TABLE IF EXISTS `branch_table`;
CREATE TABLE `branch_table`  (
  `branch_id` bigint(20) NOT NULL,
  `xid` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  `transaction_id` bigint(20) NULL DEFAULT NULL,
  `resource_group_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `resource_id` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `branch_type` varchar(8) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `status` tinyint(4) NULL DEFAULT NULL,
  `client_id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `application_data` varchar(2000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `gmt_create` datetime(6) NULL DEFAULT NULL,
  `gmt_modified` datetime(6) NULL DEFAULT NULL,
  PRIMARY KEY (`branch_id`) USING BTREE,
  INDEX `idx_xid`(`xid`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;

-- ----------------------------
-- 全局事务表
-- ----------------------------
DROP TABLE IF EXISTS `global_table`;
CREATE TABLE `global_table`  (
  `xid` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  `transaction_id` bigint(20) NULL DEFAULT NULL,
  `status` tinyint(4) NOT NULL,
  `application_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `transaction_service_group` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `transaction_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `timeout` int(11) NULL DEFAULT NULL,
  `begin_time` bigint(20) NULL DEFAULT NULL,
  `application_data` varchar(2000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `gmt_create` datetime NULL DEFAULT NULL,
  `gmt_modified` datetime NULL DEFAULT NULL,
  PRIMARY KEY (`xid`) USING BTREE,
  INDEX `idx_gmt_modified_status`(`gmt_modified`, `status`) USING BTREE,
  INDEX `idx_transaction_id`(`transaction_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;

SET FOREIGN_KEY_CHECKS = 1;
6) Starten Sie den TC-Dienst

Geben Sie das Bin-Verzeichnis ein und führen Sie darin „seata-server.bat“ aus:

java seata部署和集成的方法是什么

Nach erfolgreichem Start sollte Seata-Server im Nacos-Registrierungscenter registriert sein.

Öffnen Sie den Browser, besuchen Sie die Nacos-Adresse: http://localhost:8848 und rufen Sie dann die Seite mit der Dienstliste auf. Sie können die Informationen zum Seata-TC-Server sehen:

java seata部署和集成的方法是什么

2. Microservice-Integration Seata 1) Abhängigkeiten einführen

1) Abhängigkeiten einführen

Zuerst müssen wir Seata-Abhängigkeiten in den Microservice einführen:

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-seata</artifactId>
    <exclusions>
        <!--版本较低,1.3.0,因此排除-->
        <exclusion>
            <artifactId>seata-spring-boot-starter</artifactId>
            <groupId>io.seata</groupId>
        </exclusion>
    </exclusions>
</dependency>
<!--seata starter 采用1.4.2版本-->
<dependency>
    <groupId>io.seata</groupId>
    <artifactId>seata-spring-boot-starter</artifactId>
    <version>${seata.version}</version>
</dependency>
2) Die Konfigurationsdatei ändern

Sie müssen die Datei application.yml ändern und einige Konfigurationen hinzufügen:

seata:
  registry: # TC服务注册中心的配置,微服务根据这些信息去注册中心获取tc服务地址
    # 参考tc服务自己的registry.conf中的配置
    type: nacos
    nacos: # tc
      server-addr: 127.0.0.1:8848
      namespace: ""
      group: DEFAULT_GROUP
      application: seata-tc-server # tc服务在nacos中的服务名称
      cluster: SH
  tx-service-group: seata-demo # 事务组,根据这个获取tc服务的cluster名称
  service:
    vgroup-mapping: # 事务组与TC服务cluster的映射关系
      seata-demo: SH

3. TC-Dienst hoch verfügbar und externe Notfallwiederherstellung 1) Simulieren Sie einen TC-Cluster für die externe Notfallwiederherstellung

Knotenname

IP-Adresse

PortnummerClusternameseata127.0.0.18091SHseata2127.0.0.18 092 HZÄndern Sie den Inhalt von „seata2/conf/registry.conf“ wie folgt:
registry {
  # tc服务的注册中心类,这里选择nacos,也可以是eureka、zookeeper等
  type = "nacos"

  nacos {
    # seata tc 服务注册到 nacos的服务名称,可以自定义
    application = "seata-tc-server"
    serverAddr = "127.0.0.1:8848"
    group = "DEFAULT_GROUP"
    namespace = ""
    cluster = "HZ"
    username = "nacos"
    password = "nacos"
  }
}

config {
  # 读取tc服务端的配置文件的方式,这里是从nacos配置中心读取,这样如果tc是集群,可以共享配置
  type = "nacos"
  # 配置nacos地址等信息
  nacos {
    serverAddr = "127.0.0.1:8848"
    namespace = ""
    group = "SEATA_GROUP"
    username = "nacos"
    password = "nacos"
    dataId = "seataServer.properties"
  }
}
Wir haben zuvor einen Seata-Dienst gestartet, der Port ist 8091 und der Clustername ist SH. Kopieren Sie nun das Verzeichnis „seata“ und nennen Sie es „seata2“.
Geben Sie das Verzeichnis „seata2/bin“ ein und führen Sie dann den Befehl aus:

seata-server.bat -p 8092

Öffnen Sie die Nacos Konsole und überprüfen Sie die Serviceliste:

Klicken Sie für Details:

java seata部署和集成的方法是什么2) Transaktionsgruppenzuordnung zu Nacos konfigurieren

Als nächstes müssen wir die Zuordnungsbeziehung zwischen tx-service-group und Cluster zur Nacos-Konfiguration konfigurieren Center.

Erstellen Sie eine neue Konfiguration:java seata部署和集成的方法是什么

Der Inhalt der Konfiguration lautet wie folgt:

# 事务组映射关系
service.vgroupMapping.seata-demo=SH

service.enableDegrade=false
service.disableGlobalTransaction=false
# 与TC服务的通信配置
transport.type=TCP
transport.server=NIO
transport.heartbeat=true
transport.enableClientBatchSendRequest=false
transport.threadFactory.bossThreadPrefix=NettyBoss
transport.threadFactory.workerThreadPrefix=NettyServerNIOWorker
transport.threadFactory.serverExecutorThreadPrefix=NettyServerBizHandler
transport.threadFactory.shareBossWorker=false
transport.threadFactory.clientSelectorThreadPrefix=NettyClientSelector
transport.threadFactory.clientSelectorThreadSize=1
transport.threadFactory.clientWorkerThreadPrefix=NettyClientWorkerThread
transport.threadFactory.bossThreadSize=1
transport.threadFactory.workerThreadSize=default
transport.shutdown.wait=3
# RM配置
client.rm.asyncCommitBufferLimit=10000
client.rm.lock.retryInterval=10
client.rm.lock.retryTimes=30
client.rm.lock.retryPolicyBranchRollbackOnConflict=true
client.rm.reportRetryCount=5
client.rm.tableMetaCheckEnable=false
client.rm.tableMetaCheckerInterval=60000
client.rm.sqlParserType=druid
client.rm.reportSuccessEnable=false
client.rm.sagaBranchRegisterEnable=false
# TM配置
client.tm.commitRetryCount=5
client.tm.rollbackRetryCount=5
client.tm.defaultGlobalTransactionTimeout=60000
client.tm.degradeCheck=false
client.tm.degradeCheckAllowTimes=10
client.tm.degradeCheckPeriod=2000

# undo日志配置
client.undo.dataValidation=true
client.undo.logSerialization=jackson
client.undo.onlyCareUpdateColumns=true
client.undo.logTable=undo_log
client.undo.compress.enable=true
client.undo.compress.type=zip
client.undo.compress.threshold=64k
client.log.exceptionRate=100

3) Microservice liest die Nacos-Konfiguration

Als nächstes müssen Sie die application.yml-Datei jedes Microservices ändern, um den Microservice zuzulassen So lesen Sie die Datei „client.properties“ von nacos ein: java seata部署和集成的方法是什么

seata:
  config:
    type: nacos
    nacos:
      server-addr: 127.0.0.1:8848
      username: nacos
      password: nacos
      group: SEATA_GROUP
      data-id: client.properties

Starten Sie den Microservice neu. Ob der Microservice nun mit dem SH-Cluster von tc oder dem HZ-Cluster von tc verbunden ist, wird durch die Datei „client.properties“ von nacos bestimmt.

lient.log.ExceptionRate=100
## 3.微服务读取nacos配置

接下来,需要修改每一个微服务的application.yml文件,让微服务读取nacos中的client.properties文件:

```yaml
seata:
  config:
    type: nacos
    nacos:
      server-addr: 127.0.0.1:8848
      username: nacos
      password: nacos
      group: SEATA_GROUP
      data-id: client.properties
Starten Sie den Microservice neu. Ob der Microservice nun mit dem SH-Cluster von tc oder dem HZ-Cluster von tc verbunden ist, wird durch die client.properties von nacos bestimmt.

Das obige ist der detaillierte Inhalt vonWas ist die Bereitstellungs- und Integrationsmethode von Java Seata?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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