tidb
一 架构
TiDB 1 Server 计算层,主要负责 SQL 的解析、制定查询计划、生成执行器.
2 SQL的解析是指将SQL解析成针对k-v的操作,用来操作底层的rocksdb
   TiKV 1 分布式 Key-Value 存储引擎,用来存储真正的数据,rocksdb
2 单位是region,每个region都有副本集.利用raft协议实现高可用
   PD 1 负责分配时间戳和元数据的存储(包括region和节点的对应关系)
2 针对TiKV 做负载均衡调度
3 每个 TiKV 节点(Store)和Region的leader会定期向PD汇报整体信息
二 须知
1 整个流程是通过raft协议入口写入rocksdb,并非直接写,用来实现高可用,写入rocksdb后由rocksdb决定落地到SSD盘
三 tidb与raft
1 raft协议分为leader和follower
0 Leader 收到 client 发送的 request。
  1. Leader 将 request append 到自己的 log。
  2. Leader 将对应的 log entry 发送给其他的 follower。
  3. Leader 等待 follower 的结果,如果大多数节点提交了这个 log,则 apply。
  4. Leader 将结果返回给 client。
  5. Leader 继续处理下一次 request。
2 实现的目的有两个: 1数据副本集的建立 2 当集群出现故障时leader的选举,也即是高可用
3 针对raft的改造
1.Leader 接受一个 client 发送的 request。
2.Leader 将对应的 raft log 发送给其他 follower 并本地 append。
3.Leader 继续接受其他 client 的 requests,持续进行步骤 2。
4.Leader 发现 log 已经被 committed,在另一个线程 apply。
5.Leader 异步 apply log 之后,返回结果给对应的 client
四 region
1 tidb的基本存储单位,利用raft实现高可用,也是调度的基本单位
2 region本身存储是一个连续的k-v,默认64M,可以进行分裂和合并还有移动,通过pd调度中心实现
五 MVCC
1 tidb通过Version字段存储绑定在tikv中,来实现MVCC机制,类似于mysql的版本号

 

相关文章: