TiDB 架构
时间 2021-07-14
标签
学习笔记
tidb
newsql
TiDB架构
对比传统的独立数据库,TiDB的优点是:
- 分布式架构,可扩展性更强。
- 与MySQL兼容,可使用SQL语法。且将应用程序迁移至TiDB不需要更改代码。
- 当少数副本出现故障时,通过自动故障转移支持高可用,且该过程对应用透明。
- 支持ACID事务,适用于需要强一致性的应用场景例如银行转账。
- 提供一系列数据迁移工具便于数据的整合、迁移和备份。
架构图如下:
主要由TiDB Server、Placement Driver(PD) server和Storage Server三个部分组成。
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的一种特殊类型,以列式存储数据,主要用来加速数据分析过程。