TIDB 分层架构
TiDB 的弹性是整个架构设计的核心考量点,所以选择了更为未来的计算与存储分离的架构,从逻辑上看,主要分为三层:
1.支持标准SQL的计算引擎TiDB-Server
这里面有一个概念,大家可能会混淆,TiDB 是整个数据库的名称,同时TiDB 有一个兼容MySQL 的计算引擎TiDBServer,兼容以MySQL 5.7 为主,在逐步兼容MySQL8.0。包括在TiDB Server 支持MySQL 的协议,语法,方言语法,DDL/DML,系统变量,内置功能,SQL Mode以及类型推导等等。
2.分布式存储引擎TiKV
TiDB Server 本身并不存储数据,只是进行计算,实际的数据存储在存储层,也就是TiKV
3.负责元信息管理与调度的,调度引擎Placement
Driver ,简称PD ,PD 主要有几个功能:
a. 集群的元信息管理模块,注意这里的元信息,指的是分片(Region)的数据分布、以及集群拓扑结构,不是指的数据库里的Schema信息
b. 分布式事务ID 的分配,可以简单理解为,全局唯一序列。
c. 调度中心,默认每个TiKV 节点会在一个周期内发送节点相关数据给PD,包括Region 数量、Leader 数量、最近周期内读写量等,PD 接受后,会进行计算,然后发出再平衡调度,比如将部分Region 从Region 数量较多节点调度到Region 较少的节点上。
所以说,PD 是整个集群的大脑,为了保持全局高可用,PD也至少三个节点,通过Raft 进行三副本复制