springcloud alibaba全家桶之nacos,sentinel,seata集成
nacos版本说明:点击查看这里选择nacos1.4.3下载地址https://github.com/alibaba/nacos/releases/download/1.4.3/nacos-server-1.4.3.ziphttps://github.com/alibaba/nacos/releases/download/1.4.3/nacos-server-1.4.3.zip配置conf/app
nacos
版本说明:点击查看
这里选择nacos1.4.3
下载地址
配置
conf/application.properties中取消注释,并配置数据库信息
# db mysql
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://localhost:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=root
导入数据表
conf/nacos-mysql.sql
启动
startup.cmd -m standalone /sh startup.sh -m standalone (单机模式)
配置命名空间
1. 登录 http://*****:8848/nacos ,账号密码默认 nacos
2. 在命名空间增加记录,全部都写 dev【由于我的项目中配置的都是dev.所以需要配置下命名空间,如果使用默认的无需配置】
至此naocs就已配置完成
项目集成
增加配置项:
spring:
cloud:
nacos:
discovery:
server-addr: localhost:8848
namespace: dev
username: nacos
password: nacos
group: dev
启动项目后会在注册中心中可以看到服务已经注册成功
至此已经完成了注册中心的集成。
sentinel
版本
此处对应的cloud的sentinel的版本为1.8.0
下载地址
https://github.com/alibaba/Sentinel/releases/download/v1.8.0/sentinel-dashboard-1.8.0.jar
启动
java -jar Sentinel的jar包
账户
默认账户密码 sentinel,sentinel
项目集成
这里只把sentinel集成到了网关服务,一般情况下也是先集成到网关服务作为限流使用
<!-- sentinel服务调用 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
<!--去除jackson-dataformat-xml,否则会返回xml文件,而不是JSON-->
<exclusions>
<exclusion>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--配置sentinel规则持久化至nacos依赖-->
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-datasource-nacos</artifactId>
</dependency>
<!--和sentinel starter 配合使用,集成sentinel网关控制相关自动化配置依赖项(仅网关模块才需要依赖)-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-sentinel-gateway</artifactId>
</dependency>
至此 sentinel已经完成,访问接口后会在sentinel中看到访问的情况
seata
版本
1.3.0
下载地址
https://github.com/seata/seata/releases/download/v1.3.0/seata-server-1.3.0.zip
配置
配置文件调整:conf/registry.conf
1.使用nacos作为配置中心和注册中心,调整registry为nacos注册中心以及相应的配置信息.调整config为nacos作为配置中心. 2.事务分组问题:项目配置seata的时候大部分的问题就是事务分组的问题。seata默认的事务分组名称为my_test_tx_group,但是实际项目中很多情况是需要调整默认事务分组的名称,根据issues:https://github.com/seata/seata-samples/issues/411中提到的。如果调整了事务分组是需要去nacos的配置中心中增加一个配置记录的。以下服务的配置使用my_serivce_default_ts_group作为分组名称进行配置
data-id:service.vgroupMapping.my_serivce_default_ts_group
说明:my_serivce_default_ts_group就是我自己的事务分组名称
配置内容:default
我的分组:dev
在配置中心中加入事务分组信息【分组注册失败请查看issues:https://github.com/seata/seata-samples/issues/411】 效果如下
存储介质
使用mysql作为存储介质
下载地址:
https://github.com/seata/seata/blob/develop/script/server/db/mysql.sql
sql:
-- 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 = 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(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`)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8;
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 ('HandleAllSession', ' ', 0);
在业务的相应数据库中增加undo_log表
下载地址:
https://github.com/seata/seata/blob/develop/script/client/at/db/mysql.sql
sql:
CREATE TABLE IF NOT EXISTS `undo_log`
(
`branch_id` BIGINT NOT NULL COMMENT 'branch transaction id',
`xid` VARCHAR(128) NOT NULL COMMENT 'global transaction id',
`context` VARCHAR(128) NOT NULL COMMENT 'undo_log context,such as serialization',
`rollback_info` LONGBLOB NOT NULL COMMENT 'rollback info',
`log_status` INT(11) NOT NULL COMMENT '0:normal status,1:defense status',
`log_created` DATETIME(6) NOT NULL COMMENT 'create datetime',
`log_modified` DATETIME(6) NOT NULL COMMENT 'modify datetime',
UNIQUE KEY `ux_undo_log` (`xid`, `branch_id`)
) ENGINE = InnoDB
AUTO_INCREMENT = 1
DEFAULT CHARSET = utf8 COMMENT ='AT transaction mode undo table';
启动
bin/相应平台的启动脚本
启动成功后会在nacos注册中心中可以看到一个seata-server
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)