add . · java-wk/Java-Interview-Advanced@403c174 · GitHub
Skip to content

Commit 403c174

Browse files
author
文亮
committed
add .
1 parent 66462b6 commit 403c174

5 files changed

Lines changed: 114 additions & 0 deletions

File tree

README.md

Lines changed: 4 additions & 0 deletions
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
2+
面试突击第一季里仅仅是说了一下核心的一些思想
3+
4+
基于seata去跑分布式事务的,必须先独立去部署seata-server,TC
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
2+
TCC框架,bytetcc,seata
3+
4+
seata-server
5+
6+
bytetcc,大家就是基于mysql里面创建一些表,基于表中的数据进行状态的更新
7+
8+
9+
核心链路中的各个服务都需要跟TC这个角色进行频繁的网络通信,频繁的网络通信其实就会带来性能的开销,本来一次请求不引入分布式事务只需要100ms,此时引入了分布式事务之后可能需要耗费200ms
10+
11+
12+
13+
网络请求可能还挺耗时的,上报一些分支事务的状态给TC,seata-server,选择基于哪种存储来放这些分布式事务日志或者状态的,file,磁盘文件,MySQL,数据库来存放对应的一些状态
14+
15+
16+
17+
18+
高并发场景下,会不会有问题,seata-server,你也需要支持扩容,也需要部署多台机器,用一个数据库来存放分布式事务的日志和状态的话,假设并发量每秒上万,分库分表,对TC背后的数据库也会有同样的压力
19+
20+
这个时候对TC背后的db也得进行分库分表,抗更高的并发压力
21+
22+
23+
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
2+
3+
训练营的课程目录里,有我之前的一些课程,在网上大家都可以去看
4+
5+
亿级流量电商详情页系统
6+
elasticsearch从入门到精通
7+
8+
针对某个技术领域手把手的教学,课程内容量非常的大,代码都是一行一行的写
9+
10+
11+
https://github.com/seata/seata
12+
13+
14+
自己安装一个git bash,百度一下如何安装即可,在win上可以执行linux类的命令
15+
16+
然后自己建一个目录
17+
18+
git clone https://github.com/seata/seata-samples.git
19+
20+
也可以直接在github页面上下载:https://github.com/seata/seata-samples,建议这种方式,比较快一点,git clone速度太慢了
21+
22+
就可以把seata所有的示例代码拷贝下来,里面提供的例子就是跟我们说的电商的核心例子是类似的,然后导入到Eclipse中去,这个过程会eclipse会通过maven下载很多的依赖,需要耐心等待
23+
24+
使用脚本初始化数据库
25+
26+
```
27+
CREATE TABLE `account_tbl` (
28+
`id` int(11) NOT NULL AUTO_INCREMENT,
29+
`user_id` varchar(255) DEFAULT NULL,
30+
`money` int(11) DEFAULT '0',
31+
PRIMARY KEY (`id`)
32+
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
33+
34+
CREATE TABLE `storage_tbl` (
35+
`id` int(11) NOT NULL AUTO_INCREMENT,
36+
`commodity_code` varchar(255) DEFAULT NULL,
37+
`count` int(11) DEFAULT '0',
38+
PRIMARY KEY (`id`),
39+
UNIQUE KEY `commodity_code` (`commodity_code`)
40+
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
41+
42+
CREATE TABLE `order_tbl` (
43+
`id` int(11) NOT NULL AUTO_INCREMENT,
44+
`user_id` varchar(255) DEFAULT NULL,
45+
`commodity_code` varchar(255) DEFAULT NULL,
46+
`count` int(11) DEFAULT '0',
47+
`money` int(11) DEFAULT '0',
48+
PRIMARY KEY (`id`)
49+
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
50+
51+
CREATE TABLE `undo_log` (
52+
`id` bigint(20) NOT NULL AUTO_INCREMENT,
53+
`branch_id` bigint(20) NOT NULL,
54+
`xid` varchar(100) NOT NULL,
55+
`context` varchar(128) NOT NULL,
56+
`rollback_info` longblob NOT NULL,
57+
`log_status` int(11) NOT NULL,
58+
`log_created` datetime NOT NULL,
59+
`log_modified` datetime NOT NULL,
60+
`ext` varchar(100) DEFAULT NULL,
61+
PRIMARY KEY (`id`),
62+
UNIQUE KEY `ux_undo_log` (`xid`,`branch_id`)
63+
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
64+
```
65+
然后先要下载一个seata-server到本地,在这里下载:https://github.com/seata/seata/releases,然后启动起来,这是分布式事务管理中心,负责维护每一个分布式事务的状态,触发分布式事务的提交和回滚
66+
67+
seata-server.bat -h 127.0.0.1 -p 8091 -m file
68+
69+
直接把Spring Cloud版本的例子运行起来,观察一下依赖、配置和代码,以后自己在系统里使用直接仿照即可,eureka、account、order、storage、business,依次运行起来,修改一些配置,比如说数据库连接配置
70+
71+
72+
但是任何一个服务报错之后,seata这个分布式事务的框架会感知到,自动触发所有服务之前做的数据库操作全部进行回滚
73+
74+
75+
纯正的tcc框架,很麻烦,需要你手动把各种接口实现出来3个接口,try,confirm,cancel,bytetcc,纯的tcc框架,star
76+
77+
78+
79+
80+
81+
Lines changed: 2 additions & 0 deletions

0 commit comments

Comments
 (0)