翻来翻来csnd,倒腾了一天一夜,也没看到一篇关于Windowns10下安装配置nacos完整的解释,都是缺胳膊少腿的,废话不多说直接进入主题!!!
我的环境:window10+nacos2.0.2+seata1.4.0+git2.3.0+mysql8.0
安装步骤:
- 安装nacos(数据持久化在MySQL),此处省略
-
下载windows版本的seata1.4.0安装版本、源码版本(源码版本不下载也行,等下说名用途)
第一个是安装包,第二个是源码包,打开分布解压就行
-
MySQL数据库创建事务相关的库和表
在你的MySQL数据库创建一个用处存储tc事务相关属性的库:seata,然后打开命令行执行建表
-- 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_gmt_modified_status` (`gmt_modified`, `status`),
KEY `idx_transaction_id` (`transaction_id`)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8;
-- 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 = utf8;
-- the table to store lock data
CREATE TABLE IF NOT EXISTS `lock_table`
(
`row_key` VARCHAR(128) NOT NULL,
`xid` VARCHAR(96),
`transaction_id` BIGINT,
`branch_id` BIGINT NOT NULL,
`resource_id` VARCHAR(256),
`table_name` VARCHAR(32),
`pk` VARCHAR(36),
`gmt_create` DATETIME,
`gmt_modified` DATETIME,
PRIMARY KEY (`row_key`),
KEY `idx_branch_id` (`branch_id`)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8;
-
配置registry.conf
在安装包根目录conf文件夹有个registry.conf 文件,打开并配置:注册中心和配置中心
**注册中心:把seata注册到nacos上。
**配置中心:**出厂的时候默认设置是fiel,读取conf目录下本地的file.conf文件,这个文件是用来保存TC事务的一些属性的。如果设置配置中心为nacos,则不需要配置file.conf,但是需要配置config.txt(下面会说这个玩意哪里来的)并上传到nacos。我这是用的是nacos作为配置中心。
# **注册中心**:
registry {
# file 、nacos 、eureka、redis、zk、consul、etcd3、sofa
type = "nacos" #这里写nacos
loadBalance = "RandomLoadBalance"
loadBalanceVirtualNodes = 10
nacos {
application = "seata-server" #seata的服务名称
serverAddr = "localhost:8848" #nacos的地址和端口
group = "SEATA_GROUP" #默认就行
namespace = ""#默认就行
username = "nacos" #nacos的账号
password = "nacos" #nacos的密码
}
#省略了一堆代码,往下拉
...
...
...
# **配置中心**:
config {
# file、nacos 、apollo、zk、consul、etcd3
type = "nacos" #写nacos
nacos {
serverAddr = "localhost:8848" #nacos地址端口
namespace = "" #默认空
group = "SEATA_GROUP" #默认
username = "nacos" #nacos账号
password = "nacos" #nacos密码
dataId = "seata.properties" #这个可以都不写,反正我写了,也没啥
}
-
配置config.txt
其实config.txt和file.conf文件两者的内容其实都是一样的,只是格式不一样而已:这里主要配置数据库还有这个seata将用于哪个微服务。
config.txt来源:1、seata源码目录script\config-center
2、github
#mysql配置
store.mode=db #存储类型db
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.cj.jdbc.Driver #msyql8.0用这个驱动
store.db.url=jdbc:mysql://localhost:3306/seata
store.db.user=username
store.db.password=password
#service配置
service.vgroupMapping.my_test_tx_group=seata-order-service#这个得记住了,不能写默认的
service.default.grouplist=127.0.0.1:8091
service.enableDegrade=false
service.disableGlobalTransaction=false
保存!!!
6. 配置nacos
主要是命名空间的ID可以自定义也可以系统生成,创建后记住那串命名空间的ID号,等下要用。
7.git下上传配置文件
在对应的源码目录,也就是下面这个,打开git命令行
执行:
sh nacos/nacos-config.sh -h localhost -p 8848 -g SEATA_GROUP -t 命名空间ID -u nacos账号 -w nacos密码
说明:
-h:注册中心nacos的IP
-p:注册中心nacos端口
-g:配置分组,默认值为’SEATA_GROUP’j即可。
-t:对应Nacos的namespace ID字段。
-u:用户名
-w:密码
执行后如下,证明上传完成。
打开nacos,可以看到,证明配置成功。
- 启东seata:安装文件包的bin目录下,cmd直接启动seata-server.bat。 大功告成,可以开心的撸啦啦啦啦啦啦啦啦啦啦啦。