mysql能不能当注册中心_使用docker安装seata-server,mysql8引擎,nacos作为注册和配置中心...

本文档介绍了如何使用docker-compose搭建seata-server实例,详细说明了配置mysql8驱动、nacos作为注册中心和配置中心的步骤,包括修改config.txt、registry.conf文件,初始化数据库,以及编写docker-compose.yaml文件。
摘要由CSDN通过智能技术生成

通过查看seata官方文档,我用docker-compose搭建了一个seata-server实例环境,并且把官方默认的mysql5的driver替换成了mysql8的driver,使用了nacos作为seata-server的注册中心和配置中心。下面记录一下我的操作步骤:

1.首先咱们先把seata的项目通过git给下载到本地;seata github地址

d7c87936c99f

image-20200714170651496.png

2.修改config.txt配置文件

找到上图中的两个文件,并修改config.txt,使其符合自己当前的需求

除以下几个参数需要现在修改,其他参数可暂时不改,或后面再修改都行:

# 修改存储模式为数据库存储

store.mode=db

# 指定数据库为mysql,其他数据库类型根据自身情况修改

store.db.dbType=mysql

# 指定引擎,mysql8以下为com.mysql.jdbc.Driver,mysql8为com.mysql.cj.jdbc.Driver

store.db.driverClassName=com.mysql.cj.jdbc.Driver

store.db.url=jdbc:mysql://{ip}:3306/{db_name}?useUnicode=true

store.db.user={db_user}

store.db.password={db_password}

注意:大多数小伙伴只需要修改以上几个参数,其他参数可暂时不改

整个config.txt文件配置有这么多参数:

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

service.vgroupMapping.my_test_tx_group=default

service.default.grouplist=127.0.0.1:8091

service.enableDegrade=false

service.disableGlobalTransaction=false

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.sqlParserType=druid

client.rm.reportSuccessEnable=false

client.rm.sagaBranchRegisterEnable=false

client.tm.commitRetryCount=5

client.tm.rollbackRetryCount=5

client.tm.degradeCheck=false

client.tm.degradeCheckAllowTimes=10

client.tm.degradeCheckPeriod=2000

store.mode=file

store.file.dir=file_store/data

store.file.maxBranchSessionSize=16384

store.file.maxGlobalSessionSize=512

store.file.fileWriteBufferCacheSize=16384

store.file.flushDiskMode=async

store.file.sessionReloadReadSize=100

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

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.queryLimit=100

store.db.lockTable=lock_table

store.db.maxWait=5000

store.redis.host=127.0.0.1

store.redis.port=6379

store.redis.maxConn=10

store.redis.minConn=1

store.redis.database=0

store.redis.password=null

store.redis.queryLimit=100

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

client.undo.dataValidation=true

client.undo.logSerialization=jackson

client.undo.onlyCareUpdateColumns=true

server.undo.logSaveDays=7

server.undo.logDeletePeriod=86400000

client.undo.logTable=undo_log

client.log.exceptionRate=100

transport.serialization=seata

transport.compressor=none

metrics.enabled=false

metrics.registryType=compact

metrics.exporterList=prometheus

metrics.exporterPrometheusPort=9898

3.将修改好的config.txt配置添加到nacos配置中心

通过ssh命令执行nacos-config.sh文件

sh nacos-config.sh -h {nacos服务的host} -u {nacos用户名} -w {nacos密码}

解析一下上述命令中参数的意思:

[-h host] [-p port] [-g group] [-t tenant] [-u username] [-w password]

按照nacos服务请看这里:docker搭建nacos server集群

配置上传成功的截图:

d7c87936c99f

image.png

4.下载好mysql8的引擎

5.编写registry.conf。这个文件的目的就是配置seata-server服务从nacos上读取第3步上传上去的配置,并且把自己注册到nacos的服务列表中去

registry {

# file 、nacos 、eureka、redis、zk、consul、etcd3、sofa

# 指定注册中心为nacos

type = "nacos"

nacos {

serverAddr = "{host}:{port}"

namespace = ""

cluster = "default"

username="{username}"

password="{password}"

}

}

config {

# file、nacos 、apollo、zk、consul、etcd3

type = "nacos"

nacos {

serverAddr = "{host}:{port}"

namespace = ""

username="{username}"

password="{password}"

}

}

6.准备初始化数据库:

-- the table to store GlobalSession data

drop table if exists `global_table`;

create table `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_gmt_modified_status` (`gmt_modified`, `status`),

key `idx_transaction_id` (`transaction_id`)

);

-- the table to store BranchSession data

drop table if exists `branch_table`;

create table `branch_table` (

`branch_id` bigint not null,

`xid` varchar(128) not null,

`transaction_id` bigint ,

`resource_group_id` varchar(32),

`resource_id` varchar(256) ,

`lock_key` varchar(128) ,

`branch_type` varchar(8) ,

`status` tinyint,

`client_id` varchar(64),

`application_data` varchar(2000),

`gmt_create` datetime,

`gmt_modified` datetime,

primary key (`branch_id`),

key `idx_xid` (`xid`)

);

-- the table to store lock data

drop table if exists `lock_table`;

create table `lock_table` (

`row_key` varchar(128) not null,

`xid` varchar(96),

`transaction_id` long ,

`branch_id` long,

`resource_id` varchar(256) ,

`table_name` varchar(32) ,

`pk` varchar(36) ,

`gmt_create` datetime ,

`gmt_modified` datetime,

primary key(`row_key`)

);

7.编写docker-compose.yaml文件

version: "3.2"

services:

# 分布式事务服务

seata-server:

image: seataio/seata-server

ports:

- "8091:8091"

environment:

#宿主机ip

- SEATA_IP={宿主机host}

- SEATA_PORT=8091

- STORE_MODE=db

volumes:

# 第5步编写的registry.conf

- "./seata_server/resources/registry.conf:/seata-server/resources/registry.conf"

# 第4步下载的mysql8引擎jar包

- "./seata_server/libs/mysql-connector-java-8.0.21.jar:/seata-server/libs/mysql-connector-java-8.0.21.jar"

# 日志文件夹

- "./seata_server/logs:/root/logs/seata"

8.启动seata-server服务

docker-compose up -d seata-server

seata-server注册成功截图:

d7c87936c99f

image.png

Docker是一种容器化解决方案,Docker Compose可以简化多个容器的管理和部署流程。Nacos是一个用于服务发现、配置管理和动态DNS服务的开源平台。Node.js是一个基于JavaScript的开源、跨平台的运行时环境,用于构建可扩展的网络应用程序。MongoDB是一个高性能、文档型NoSQL数据库,适用于处理大量的结构化和非结构化数据。MySQL是一个开源的关系型数据库管理系统,用于存储和管理结构化数据。Redis是一个基于内存的高性能键值存储系统,用于缓存和数据持久化。Seata是一个开源的分布式事务解决方案,用于保证分布式系统中的数据一致性。 通过Docker Compose,我们可以轻松地将这些不同的组件和服务以容器化的方式部署在一台或多台服务器上。我们可以使用Docker Compose的配置文件定义每个服务的镜像、端口映射、环境变量等设置。在这个场景中,我们可以将Nacos、Node.js、MongoDB、MySQL、Redis和Seata分别作为独立的服务进行定义。 使用Docker Compose可以简化部署过程,只需运行一个命令即可启动整个应用程序的容器群组。Docker会自动拉取和部署所需的镜像,启动容器,并通过网络连接各个服务Nacos可以作为服务发现和配置中心,用于管理和注册各个服务的地址和配置信息。Node.js可以作为应用程序的后端逻辑进行开发,通过Nacos来发现和调用各个后端服务。MongoDB作为主要的数据存储,MySQL和Redis可以作为辅助数据存储和缓存。Seata可以用于管理和控制分布式事务,确保数据一致性。 总之,使用Docker Compose可以方便地将Nacos、Node.js、MongoDB、MySQL、Redis和Seata等组件集成在一起,并通过容器化的方式进行部署。这样做可以极大地简化应用程序的开发和部署过程,并提供高度可扩展的架构。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值