【赵渝强老师】TiDB PD集群存储的信息

TiDB是PingCAP公司自主设计、研发的开源分布式关系型数据库,是一款同时支持在线事务处理与在线分析处理(Hybrid Transactional and Analytical Processing,HTAP)的融合型分布式数据库产品,具备水平扩容或者缩容、金融级高可用、实时HTAP、云原生的分布式数据库、兼容MySQL协议和MySQL生态等重要特性。目标是为用户提供一站式OLTP(Online Transactional Processing)、OLAP(Online Analytical Processing)、HTAP解决方案。TiDB适合高可用、强一致要求较高、数据规模较大等各种应用场景。

一、 TiDB的体系架构

在内核设计上,TiDB分布式数据库将整体架构拆分成了多个模块,各模块之间互相通信,组成完整的TiDB系统。对应的架构图如下:

通过使用TiKV存储引擎支持OLTP的应用场景,而通过使用TiFlash存储引擎支持OLAP的应用场景。在TiDB数据库分布式集群中主要包含三个子集群:

  • 1、存储集群:

该子集群负责数据的存储,其中又有行存引擎和列存引擎两种不同的存储方式:行存引擎指的是TiKV节点,它最终将数据存入底层的RocksDB中;列存引擎指的是TiFlash节点,它从TiKV节点中实时同步数据,这样的TiFlash节点也可以有多个。

  • 2、调度集群:

调度集群中的每个节点叫做PD Instance,也叫做PD实例。存储集群会将数据存储位置等元信息存入调度集群中。

  • 3、计算集群:

该子集群中可以包含多个TiDB Instance,即:TiDB实例。计算集群负责接收客户端发送的SQL语句,并访问PD集群获取数据存储位置和集群的时间戳TSO等信息,最终将SQL语句转换成Key-Value的键值操作,从而访问存储在存储集群中的数据。

二、 TiDB PD集群存储的信息

Placement Driver(简称PD)是TiDB里面全局中心总控节点,是整个集群的管理模块,负责整个集群的调度。TiDB作为一个分布式高可用存储系统,系统需要具备多副本容错,动态扩容、缩容,容忍节点掉线以及自动错误恢复的功能。为了满足这些功能,TiDB就需要收集足够的信息,比如每个节点的状态、每个Raft Group的信息等。PD根据这些信息以及调度的策略,制定出尽量满足这些需求的调度计划,并提供基本操作来完成这个计划。PD的主要工作体现在以下三个方面:

  • 存储集群的元信息,例如:Region存储在哪个TiKV节点;
  • 对TiKV集群进行调度和负载均衡,如:数据的迁移、Raft Group Leader的选举等;
  • 分配全局唯一且递增的事务ID。
视频讲解如下
【赵渝强老师】TiDB PD集群存储的信息

PD的调度功能依赖于整个集群信息的收集,简单来说,PD需要知道每个TiKV节点的状态以及每个Region的状态。TiKV集群会向PD汇报以下两类消息:

  • 每个TiKV节点会定期向PD汇报节点的状态信息

TiKV节点(也叫Store)与PD之间存在心跳包,一方面PD通过心跳包检测每个Store是否存活,以及是否有新加入的Store;另一方面,心跳包中也会携带这个Store的状态信息,主要包括:

(1)总磁盘容量

(2)可用磁盘容量

(3)承载的Region数量

(4)数据写入/读取速度

(5)发送/接受的Snapshot数量(副本之间可能会通过Snapshot同步数据)

(6)Store是否过载

(7)labels标签信息(标签是具备层级关系的一系列Tag,能够感知拓扑信息)

通过使用命令行工具pd-ctl可以查看到TiKV Store的状态信息。

  • 每个Raft Group的Leader会定期向PD汇报Region的状态信息

每个Raft Group的Leader和PD之间存在心跳包,用于汇报这个Region的状态,主要包括下面几点信息:

(1)Leader的位置

(2)Followers的位置

(3)掉线副本的个数

(4)数据写入/读取的速度

相关推荐
马克Markorg4 小时前
常见的向量数据库和具有向量数据库能力的数据库
数据库
Coder_Boy_6 小时前
技术让开发更轻松的底层矛盾
java·大数据·数据库·人工智能·深度学习
helloworldandy6 小时前
使用Pandas进行数据分析:从数据清洗到可视化
jvm·数据库·python
数据知道8 小时前
PostgreSQL 故障排查:如何找出数据库中最耗时的 SQL 语句
数据库·sql·postgresql
qq_12498707538 小时前
基于SSM的动物保护系统的设计与实现(源码+论文+部署+安装)
java·数据库·spring boot·毕业设计·ssm·计算机毕业设计
枷锁—sha8 小时前
【SRC】SQL注入WAF 绕过应对策略(二)
网络·数据库·python·sql·安全·网络安全
Coder_Boy_8 小时前
基于SpringAI的在线考试系统-考试系统开发流程案例
java·数据库·人工智能·spring boot·后端
Gain_chance8 小时前
35-学习笔记尚硅谷数仓搭建-DWS层最近n日汇总表及历史至今汇总表建表语句
数据库·数据仓库·hive·笔记·学习
此生只爱蛋8 小时前
【Redis】主从复制
数据库·redis
马猴烧酒.9 小时前
【面试八股|JAVA多线程】JAVA多线程常考面试题详解
java·服务器·数据库