TiDB 架构

TiDB架构


对比传统的独立数据库,TiDB的优点是:

  1. 分布式架构,可扩展性更强。
  2. 与MySQL兼容,可使用SQL语法。且将应用程序迁移至TiDB不需要更改代码。
  3. 当少数副本出现故障时,通过自动故障转移支持高可用,且该过程对应用透明。
  4. 支持ACID事务,适用于需要强一致性的应用场景例如银行转账。
  5. 提供一系列数据迁移工具便于数据的整合、迁移和备份。

架构图如下:
TiDB架构
主要由TiDB Server、Placement Driver(PD) server和Storage Server三个部分组成。

HTAP

TiDB Server

  • TiDB服务器是一个无状态SQL层,它提供了MySql的相关接口。TiDB Server的主要工作是接收SQL请求,执行SQL解析和优化,并且最终生成一个分布式的可执行指令。
  • TiDB Server是可水平扩展的,它通过一些负载均衡组件,例如LVS(Linux Virtual Server),HAProxy、F5等,从而为外部提供统一的接口。
  • TiDB Server用于SQL分析、计算、传输数据读取请求给TiKV节点(或者TiFlash 节点).
  • 不存储数据。

Placement Driver(PD) Server

  • PD是整个集群的元数据管理中心,是TiDB的大脑(司令部)
  • 存储每个TiKV节点的元数据信息,存储整个TiDB集群的拓扑结构。
  • 提供TiDB后台可视化管理系统。
  • 为分布式事务分配事务ID。
  • 通过TiKV节点实时上报的数据分布式状态,制定相关的数据调度指令并发送至特定的TiKV节点。
  • 至少包含三个节点,且官方推荐其数量为奇数个。

Storage Server

TiKV Server

  • 负责存储数据。
  • 是一个分布式事务型的key-value存储引擎。
  • Region是存储数据的基本单元,每个Region负责key的区间是[StartKey, EndKey)。
  • 一个TiKV节点可以包含多个Region。
  • TiDB在SQL层支持分布式事务的核心是:TiKV API提供了在(key, value)层的分布式事务支持,且默认情况下支持快照隔离级别的隔离。在处理SQL语句之后,TiDB Server会将生成的SQL 执行计划转换为对TiKV API的调用。因此,数据实际存储在TiKV中。
  • TiKV中的数据是多副本的(默认三份),因此,TiKV具有高可用特性且支持自动容灾恢复。

TiFlash Server

它是Storage Server的一种特殊类型,以列式存储数据,主要用来加速数据分析过程。