seata2.0 下载安装部署,使用nacos为配置中心、注册中心

目录

前言

​​​​​一、下载seata安装包

二、指定nacos为配置中心、注册中心

三、上传配置到nacos配置中心

四、创建表

五、启动seata server


前言

Seata分TC、TM和RM三个角色,TC(Server端)为单独服务端部署,TM和RM(Client端)由业务系统集成。此篇为seata Server端部署。 


​​​​​一、下载seata安装包

先在seata官网下载seata安装包

​​

压缩包解压后目录如下:

​​

config目录

​​

script目录:

​​

二、指定nacos为配置中心、注册中心

打开config/application.yml文件,我们主要关注以下几个模块的配置。

1、server端配置中心指定,seata.config.type

2、server端注册中心指定,seata.registry.type

3、server端存储模式指定,seata.store.mode

修改config/application.yml文件,指定nacos为配置中心、注册中心,并将seata.store.mode屏蔽,后续中配置中心中进行配置。

其余配置中心可参考config/application.example.yml文件。

三、上传配置到nacos配置中心

请确保后台已经启动 Nacos 服务。

首先你需要在nacos新建seata配置,此处dataId为seataServer.properties

​​

配置内容参考:

  

# socket通信方式, 公共部分

transport.type=TCP

transport.server=NIO

transport.heartbeat=true

transport.enableTmClientBatchSendRequest=false

transport.enableRmClientBatchSendRequest=true

transport.enableTcServerBatchSendResponse=false

transport.rpcRmRequestTimeout=30000

transport.rpcTmRequestTimeout=30000

transport.rpcTcRequestTimeout=30000

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

transport.serialization=seata

transport.compressor=none

 

# 首先应用程序(客户端)中配置了事务分组,若应用程序是SpringBoot则通过配置seata.tx-service-group=[事务分组配置项]

# 事务群组,service.vgroupMapping.[事务分组配置项]=TC集群的名称

service.vgroupMapping.default_tx_group=default

#If you use a registry, you can ignore it

service.default.grouplist=127.0.0.1:8091

service.enableDegrade=false

service.disableGlobalTransaction=false

# undo配置

server.undo.logSaveDays=7

server.undo.logDeletePeriod=86400000

client.undo.logTable=undo_log

client.undo.compress.enable=true

client.undo.compress.type=zip

client.undo.compress.threshold=64k

#For TCC transaction mode

tcc.fence.logTableName=tcc_fence_log

tcc.fence.cleanPeriod=1h

# You can choose from the following options: fastjson, jackson, gson

tcc.contextJsonParserType=fastjson

 

#Log rule configuration, for client and server

log.exceptionRate=100

 

#事务会话信息存储方式

store.mode=db

#事务锁信息存储方式

store.lock.mode=db

#事务回话信息存储方式

store.session.mode=db

#db或redis存储密码解密公钥

store.publicKey=

 

#存储方式为db

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=username

store.db.password=password

store.db.minConn=5

store.db.maxConn=30

store.db.globalTable=global_table

store.db.branchTable=branch_table

store.db.distributedLockTable=distributed_lock

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.distributedLockExpireTime=10000

server.session.branchAsyncQueueSize=5000

server.session.enableBranchAsyncRemove=false

server.enableParallelRequestHandle=true

server.enableParallelHandleBranch=false

 

server.raft.cluster=127.0.0.1:7091,127.0.0.1:7092,127.0.0.1:7093

server.raft.snapshotInterval=600

server.raft.applyBatch=32

server.raft.maxAppendBufferSize=262144

server.raft.maxReplicatorInflightMsgs=256

server.raft.disruptorBufferSize=16384

server.raft.electionTimeoutMs=2000

server.raft.reporterEnabled=false

server.raft.reporterInitialDelay=60

server.raft.serialization=jackson

server.raft.compressor=none

server.raft.sync=true



 

#Metrics配置

metrics.enabled=false

metrics.registryType=compact

metrics.exporterList=prometheus

metrics.exporterPrometheusPort=9898

更多更详细的内容可参考script/config-center/config.txt

四、创建表

在上面的nacos配置文件中,已经配置了存储模型为db以及数据库连接配置,还需建表。

​建表语句在文件script/server/db/mysql.sql

-- -------------------------------- The script used when storeMode is 'db' --------------------------------
-- the table to store GlobalSession data
CREATE TABLE IF NOT EXISTS `global_table`
(
    `xid`                       VARCHAR(128) NOT NULL,
    `transaction_id`            BIGINT,
    `status`                    TINYINT      NOT NULL,
    `application_id`            VARCHAR(32),
    `transaction_service_group` VARCHAR(32),
    `transaction_name`          VARCHAR(128),
    `timeout`                   INT,
    `begin_time`                BIGINT,
    `application_data`          VARCHAR(2000),
    `gmt_create`                DATETIME,
    `gmt_modified`              DATETIME,
    PRIMARY KEY (`xid`),
    KEY `idx_status_gmt_modified` (`status` , `gmt_modified`),
    KEY `idx_transaction_id` (`transaction_id`)
) ENGINE = InnoDB
  DEFAULT CHARSET = utf8mb4;

-- the table to store BranchSession data
CREATE TABLE IF NOT EXISTS `branch_table`
(
    `branch_id`         BIGINT       NOT NULL,
    `xid`               VARCHAR(128) NOT NULL,
    `transaction_id`    BIGINT,
    `resource_group_id` VARCHAR(32),
    `resource_id`       VARCHAR(256),
    `branch_type`       VARCHAR(8),
    `status`            TINYINT,
    `client_id`         VARCHAR(64),
    `application_data`  VARCHAR(2000),
    `gmt_create`        DATETIME(6),
    `gmt_modified`      DATETIME(6),
    PRIMARY KEY (`branch_id`),
    KEY `idx_xid` (`xid`)
) ENGINE = InnoDB
  DEFAULT CHARSET = utf8mb4;

-- the table to store lock data
CREATE TABLE IF NOT EXISTS `lock_table`
(
    `row_key`        VARCHAR(128) NOT NULL,
    `xid`            VARCHAR(128),
    `transaction_id` BIGINT,
    `branch_id`      BIGINT       NOT NULL,
    `resource_id`    VARCHAR(256),
    `table_name`     VARCHAR(32),
    `pk`             VARCHAR(36),
    `status`         TINYINT      NOT NULL DEFAULT '0' COMMENT '0:locked ,1:rollbacking',
    `gmt_create`     DATETIME,
    `gmt_modified`   DATETIME,
    PRIMARY KEY (`row_key`),
    KEY `idx_status` (`status`),
    KEY `idx_branch_id` (`branch_id`),
    KEY `idx_xid` (`xid`)
) ENGINE = InnoDB
  DEFAULT CHARSET = utf8mb4;

CREATE TABLE IF NOT EXISTS `distributed_lock`
(
    `lock_key`       CHAR(20) NOT NULL,
    `lock_value`     VARCHAR(20) NOT NULL,
    `expire`         BIGINT,
    primary key (`lock_key`)
) ENGINE = InnoDB
  DEFAULT CHARSET = utf8mb4;

INSERT INTO `distributed_lock` (lock_key, lock_value, expire) VALUES ('AsyncCommitting', ' ', 0);
INSERT INTO `distributed_lock` (lock_key, lock_value, expire) VALUES ('RetryCommitting', ' ', 0);
INSERT INTO `distributed_lock` (lock_key, lock_value, expire) VALUES ('RetryRollbacking', ' ', 0);
INSERT INTO `distributed_lock` (lock_key, lock_value, expire) VALUES ('TxTimeoutCheck', ' ', 0);

五、启动seata server

支持的启动命令参数:

​​

切换到seata的bin目录,输入命令 

./seata-server.sh -h 127.0.0.1 -p 8091

​​

 可以看到提示已经启动成功,也可以到提示的日志目录查看日志文件

​​

也可以输入http://localhost:7091​​​​​​​

​​

另外在nacos也可以看到seata-server注册成功 

​​

Seata 2.0是一款开源的分布式事务解决方案,用于解决分布式系统中的事务一致性问题。它提供了大规模分布式事务的管理和协调能力,支持多种主流的数据库和中间件,如MySQL、Oracle、Redis等。下面是关于Seata 2.0下载的相关介绍: 首先,要下载Seata 2.0,我们可以通过官方的GitHub仓库进行下载。在GitHub上搜索Seata,并找到官方仓库。然后,在仓库的首页可以找到最新版本的下载链接。点击链接后,你可以选择下载相应的文件,比如源码包或者二进制包。 其次,如果你希望直接下载预编译好的二进制包,可以找到release或者releases标签,点击查看已发布的版本列表。在列表中找到你想要下载的版本号,并点击进入对应的版本页面。在这个页面中,你可以找到下载链接,点击即可开始下载。 另外,Seata 2.0还提供了多种语言版本的SDK,包括Java、Go、Node.js等。如果你需要使用某个特定语言的SDK,可以在仓库的首页或版本页面中找到相关链接,点击即可下载。 最后,如果你对Seata 2.0的下载有任何问题或疑问,可以在官方仓库的Issues页面中提问,或者参考官方文档和社区论坛获取更多帮助。 总结一下,要下载Seata 2.0,可以通过官方GitHub仓库找到最新版本的下载链接,选择下载源码包或者二进制包,并根据需求选择相应的语言SDK。同时,如果有任何问题,可以通过官方渠道获取帮助。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值