【TiKV / HTAP 内核】HTAP / 分布式 KV 全景:TiDB–TiKV–PD–TiFlash 四件套
内容提要
本文介绍了TiDB集群的四个核心组件及其功能:TiDB负责SQL解析和请求路由,TiKV处理分布式事务和数据存储,PD管理元数据和调度,TiFlash提供列存分析副本。理解各组件的独立性和复杂性有助于排查性能问题。接下来将深入探讨TiKV的具体实现与机制。
关键要点
-
TiDB负责SQL解析和请求路由,不持久化数据,不做Raft复制。
-
TiKV处理分布式事务和数据存储,使用Region、Multi-Raft和MVCC,不理解SQL,不做列存。
-
PD管理元数据和调度,负责Region路由表和时间戳分配,不存业务数据,不参与Raft日志复制。
-
TiFlash提供列存分析副本,作为Raft Learner接收Raft日志,不参与Raft选举和提交。
-
TiDB将SQL请求转化为Key-Value请求,TiKV通过Raft复制数据,PD负责调度和时间戳分配,TiFlash异步处理列存数据。
-
TiKV的复杂性在于Region切分和Multi-Raft复制,而非RocksDB本身。
-
PD的调度决策直接影响集群的负载均衡和性能。
-
TiFlash的设计是将Raft日志同时提供给行存和列存状态机,而不是简单的数据同步。
延伸解读
组件间的独立性与复杂性
TiDB、TiKV、PD和TiFlash各自承担不同的角色,理解它们的独立性有助于排查性能问题。许多用户在遇到延迟时,往往将问题归咎于SQL层,但实际上,性能瓶颈可能源于Region切分、Raft复制或PD调度等底层机制。
PD的调度决策影响
PD不仅是元数据的管理中心,其调度决策直接影响集群的负载均衡和性能。合理的调度可以减少延迟,提高系统的整体效率,因此在进行系统优化时,关注PD的调度策略是非常重要的。
TiFlash的设计理念
TiFlash作为Raft Learner,设计上并不是简单的数据同步,而是通过接入TiKV的Raft组来实现行存与列存的并行处理。这种设计保证了数据的新鲜度,适合需要快速分析的场景,避免了传统ETL过程中的延迟。
延伸问答
TiDB的主要功能是什么?
TiDB负责SQL解析和请求路由,不持久化数据,也不进行Raft复制。
TiKV是如何处理分布式事务的?
TiKV使用Region、Multi-Raft和MVCC来处理分布式事务和数据存储。
PD在TiDB集群中扮演什么角色?
PD管理元数据和调度,负责Region路由表和时间戳分配,不存储业务数据。
TiFlash的设计有什么特点?
TiFlash作为Raft Learner接收Raft日志,不参与Raft选举和提交,提供列存分析副本。
TiDB集群的四个核心组件分别是什么?
四个核心组件是TiDB、TiKV、PD和TiFlash,各自负责不同的功能。
TiKV的复杂性主要体现在什么方面?
TiKV的复杂性主要在于Region切分和Multi-Raft复制,而不是RocksDB本身。