写这篇文章单纯记录一下,网上很多教程真是醉了… 可能我是新手不友好吧
stata 分布式事务处理框架嘛,想研究一下源码. 但是首先要有个环境
nacos我也只是了解过没怎么玩
网上叫我搞什么 nacos-config.sh
脚本, 一通命令 把 txt 文件的配置上传到 nacos, 搞得俺 seata-server服务都跑不起来…找了很久才找到, 其实哪有那么麻烦呢… 那么多配置看的脑阔疼,咱只是搭个环境玩玩而已呀~
废话不多说,开始搭建环境
nacos 环境
1. 下载nacos-server
地址:https://github.com/alibaba/nacos/releases
选择nacos-server-1.4.0.zip下载并解压
2. 创建数据库和数据化
本地创建MYSQL数据库nacos,导入解压文件夹中的nacos-mysql.sql脚本
3. 配置数据库连接
编辑配置文件application.properties
将此处的mysql连接配置修改为正确的连接信息并解除注释状态
4. 启动nacos-server服务
在bin文件夹下执行命令:
startup.cmd -m standalone
其中-m standalone指定为单机模式,否则以cluster集群模式启动
5. 进入nacos管理控制台
启动nacos服务后,接下来登录管理控制台看看吧
地址: http://localhost:8848/nacos
账号/密码: nacos/nacos
seata 环境搭建
使用 seata 要先启动 seata-server
下载seata1.4.0:https://github.com/seata/seata/releases
1. 修改seata\conf\registry.conf文件
把 db 改成 nacos
2. 建库建表
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_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,
`gmt_modified` DATETIME,
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;
启动 seata-server
双击 startup.cmd 即可
看是否在 nacos 注册中心注册成功
网上找个 demo 测试 一下
https://gitee.com/itCjb/spring-cloud-alibaba-seata-demo.git
注意:
在 yml 中的一些配置
比如 seata.tx-service-group: my_test_tx_group,
那在 nacos中就要有 service.vgroupMapping.my_test_tx_group
里面的值要跟 registry.conf 里配置的一样
以上两点注意, 原因待研究…