这篇文章将向大家介绍TiDB数据库系统的总体架构,本文参考了pingcap官方文档,并补充了少量内容。在介绍TiDB总体架构时,还简要描述了每一个组件的可扩展性和高可用性。
TiDB 分布式数据库集群如上图所示主要分为三个组件:
(1) TiDB Server
TiDB Server 负责接收SQL请求,处理SQL 相关的逻辑,并通过PD 找到存储计算所需数据的TiKV 地址,与TiKV交互获取数据,最终返回结果。
TiDB Server 是无状态的,其本身并不存储数据,只负责计算,可以无限水平扩展,可以通过负载均衡组件(如LVS、HAProxy 或F5)对外提供统一的接入地址。
为了确保靠可用,推荐至少部署两个TiDB实例,前端通过负载均衡组件对外提供服务。当单个实例失效时,只会影响正在这个实例上进行的Session,从应用的角度看,会出现单次请求失败的情况,重新连接后即可继续获得服务。单个TiDB实例失效后,可以重启这个实例或者部署一个新的实例。
(2) PD Server
Placement Driver (简称PD) 是整个集群的管理模块,其主要工作职责有三个:一是存储集群的元信息(某个Key 存储在哪个TiKV 节点);二是对TiKV 集群进行调度和负载均衡(如Region的迁移、Raft group leader 的迁移等);三是分配