TiDB架构原理简介
一、TiDB主要特性
TiDB是一个开源分布式关系型数据库,它主要用来应用在全部的OLTP的场景和大部
分的OLAP场景。TiDB作为一个开源的分布式数据库主要有以下特点:
1、高度兼容MySQL
MySQL迁移到TiDB是非常容易的,无论是单机迁移还是集群的迁移
2、支持无限的水平弹性扩展
新增节点实现TiDB的水平扩展,轻松地应对高并发、海量数据的场景
3、强一致性和高可用
基于Raft的多数派选举协议可以提供100%的数据强一致性,可以实现故障的自动恢复
4、分布式事务
支持ACID事务
TiDB这些特性使它成为业界认可的优秀数据库产品,但是我们要想深入理解这些特性,
还要从架构原理的角度学习
二、TiDB的架构原理简介
TiDB集群主要包括三个核心组件:TiDB Server,PD Server,TiKV Server
具体的架构原理图如下所示:
1、TiDB Server
TiDB Server 负责接收SQL请求,处理SQL相关的逻辑,并通过PD找到存储计算所需
数据的TiKV地址,与TiKV交互数据,最终返回结果。
TiDB Server 是无状态的,其本身并不存储数据,只负责计算,可以无限水平扩展,
可通过负载均衡的组件(LVS、HAProxy或者F5)对外提供统一的接入地址
2、PD Server(Placement Driver)
PD是整个集群的管理模块,具体的工作职能是:
存储这个集群的原信息(某个Key具体存储在哪个TiKV的节点)
对TiKV集群进行调度和负载均衡(数据迁移、Raft Group leader)
分配全局唯一且递增的事物ID
PD通过Raft协议保证数据的安全性,Raft的leader Server负责处理所有操作,其余的PD
Server仅用于保证高可用性。一般情况下建议部署奇数个节点
3、TiKV Server
TiKV Server是TiDB中的数据存储引擎,存储的数据的基本单位是Region
TiKV使用Raft做协议复制,保证数据的一致性和容灾。副本以Region为单位进行管理,
不同节点上的多个Region构成一个Raft Group,互为副本
数据在多个TiKV之间的负载均衡由PD调度,也是以Region为基本单位的
4、TiSpark
主要应用在OLTP和OLAP中
5、TiDB Opeartor
提供在主流云基础设施上部署管理TiDB集群的能力集成一键部署、多集群混部、自
动运维、故障自愈
三、重点特性分析
TiDB的两大核心特点就是无限水平扩展和高可用性
1、无限水平扩展
水平扩展包括计算能力和存储能力。TiDB Server负责处理Server的请求,可以增加
TiDB Server节点,提高计算能力。TiKV负责存储数据,增加TiKV可以增加存储能力
2、高可用性
TiDB、TiKV和PD这三个组件都能容忍部分实例失效,不影响整个集群的可用性
(1)TiDB
TiDB是无状态的,应该部署至少两个实例,前端通过负载均衡的组件对外提供服务
如果单次请求失败后,重新连接就可继续获得服务
(2)PD
PD是一个集群,通过Raft协议保持数据的一致性,当单个实例失效时,如果不是
Raft的Leader,完全不影响服务。如果是Raft的Leader,会重新选举出Raft的leader,
自动恢复服务,但是PD在选举的过程中无法对外提供服务
(3)TiKV
TiKV也是一个集群,通过Raft协议保证数据的一致性,副本数量可配置,默认保持
三副本,通过PD做负载均衡调度。 单个节点失效时,会影响这个节点上存储的所有
Region。对于Region中的Leader节点,会中断服务,等待重新选举;对于Follower节点,
不会影响服务。如果某个TiKV节点失效时,并且在一段时间内无法恢复,PD会将其上的
数据迁移到其他的TiKV节点上