课程名称:课程版本(101/201/301)+ 课程名称
学习时长:
20
课程收获:
学习了Tidb读写请求的流程。
课程内容:
目标:
了解整体架构
了解Tidb对读请求的处理
了解Tidb对写请求的处理
Part 1:
Tidb三大组件的主要功能。
Tidb组件:
数据库的sql层,对外暴露mysql的连接endpoint,负责接收客户端的连接,执行sql解析和优化,最终生成分布式执行计划,本身无状态。实践中可以启动多个Tidb实例,可以端连接可以均衡的分布在多个Tidb实例上,达到负载均衡的效果。Tidb本身不提供负载均衡的功能,需要依赖外部软件或者硬件的负载均衡实现。比如haproxy,LVS,F5等。
本身不存储sql,只是解析sql,将实际的数据请求给以及给底层的存储层,也就是Tikv,
Tikv:
基于Rockdb引擎修改实现的分布式KV存储引擎,具有高度分层的特性。
在底层RockdbKV存储上层实现了Raft协议,保证了数据的一致性。
在Raft上层又实现了MVCC特性,实现多版本并发控制。
在MVCC上层还有一层事物层,实现事项相关的功能。
Tikv是分布式KV存储引擎,不依赖分布式文件系统实现。
PD:
负责分配分布式事物的ID,事物在开始和提交的时候需要获取全局唯一的TSO号。
实现region和leader的调度,让数据和请求压力均衡的打散到Tikv节点上。
本身通过etcd实现了高可用。
Tidb 4.0实现了dashboard。
读请求处理过程:
1. 客户端和Tidb建立连接,并发送请求给Tidb。
2. Tidb接收客户端的请求,获取客户请求中的sql。
3. Tidb解析编排sql,生成AST语法树,进行优化。
4. Tidb从PD中获取start_ts
5. Tidb根据执行计划以及table元信息,生成excutor执行器
6. Tidb通过gRP将Coprocessor请求发送给Tikv
7. Tikv接收请求,查找数据并返回结果给TIDB.
8. Tidb从Tikv接收所有数据,进行整理汇总。
9.Tidb将结果发送给客户端。
写请求处理过程:
1. 客户端和Tidb建立连接,并发送请求给Tidb。
2. Tidb接收客户端的请求,获取客户请求中的sql。
3. Tidb解析编排sql,生成AST语法树,进行优化。
4. Tidb从PD中获取start_ts
5. Tidb根据执行计划以及table元信息,生成excutor执行器
6. Tidb发起Commit请求
7. Tikv按照percolator使用二阶段提交来提交数据,Tidb在commit阶段会获取commit_ts
8. Tikv将提交的结果返回给Tidb。
9. Tidb将结果发送给Ttidb.
读写请求的区别:
1. 读请求向PD请求一次TSO,写请求有两次,一次start_ts,一次commit_ts
2. 写请求有二阶段提交和分布式事物的相关内容。