【TiKV / HTAP 内核】HTAP / 分布式 KV 全景:TiDB–TiKV–PD–TiFlash 四件套

💡 原文中文,约8600字,阅读约需21分钟。
📝

内容提要

本文介绍了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本身。

🏷️

标签

➡️

继续阅读