【TiKV / HTAP 内核】Region 模型:range、epoch、peer
内容提要
TiKV 将集群数据视为全局有序的 Key-Value 大表,按 Key 切分为多个 Region。每个 Region 代表一个连续的 Key 区间,RegionEpoch 通过两个字段管理版本,确保请求有效性。每个 Region 由多个 Peer 组成 Raft 组,只有 Leader 处理读写请求。PD 负责均衡 Region 和 Leader 的分布,以提升容错能力和性能。
关键要点
-
TiKV 将集群数据视为全局有序的 Key-Value 大表,按 Key 切分为多个 Region。
-
每个 Region 代表一个连续的 Key 区间,使用 RegionEpoch 管理版本,确保请求有效性。
-
RegionEpoch 包含两个字段:conf_ver(配置变更版本号)和 version(Region 版本号),各自管理不同的变化。
-
每个 Region 由多个 Peer 组成 Raft 组,只有 Leader 处理读写请求。
-
PD 负责均衡 Region 和 Leader 的分布,以提升容错能力和性能。
-
Region 与 SQL 表之间不存在固定的对应关系,表的数据可能跨越多个 Region。
-
Region 的 Key 区间是动态变化的,可能因 split 或 merge 而改变。
-
Peer 数量影响容错能力和读扩展性,但不影响写入吞吐量。
延伸解读
Region与SQL表的关系
TiKV中的Region并不与SQL表一一对应。一个大的SQL表可能会被切分成多个Region,而多个小表的数据也可能共享同一个Region。这种动态关系意味着在设计数据库时,需要考虑数据的分布和访问模式,以优化性能和存储效率。
RegionEpoch的作用
RegionEpoch通过conf_ver和version两个字段管理Region的状态,确保请求的有效性。理解这两个字段的作用对于开发者来说至关重要,因为它们帮助检测陈旧的路由信息,避免因数据不一致而导致的错误。
Peer与Leader的角色
在TiKV中,每个Region由多个Peer组成,其中只有一个Peer是Leader,负责处理读写请求。Peer的数量影响容错能力和读扩展性,但不影响写入吞吐量。合理配置Peer数量和分布可以提高系统的可靠性和性能。
延伸问答
TiKV 中的 Region 是如何定义的?
Region 是一段连续的 Key 区间,由 start_key 和 end_key 定义,覆盖整个 Key 空间,互不重叠。
RegionEpoch 在 TiKV 中的作用是什么?
RegionEpoch 用于管理 Region 的版本,包含 conf_ver 和 version 两个字段,分别管理 Peer 变化和 Region 范围变化。
TiKV 中的 Peer 和 Leader 有什么关系?
每个 Region 由多个 Peer 组成 Raft 组,其中一个 Peer 是 Leader,负责处理读写请求,其余为 Follower。
PD 在 TiKV 中的角色是什么?
PD 负责均衡 Region 和 Leader 的分布,以提升系统的容错能力和性能。
TiKV 中 Region 的 Key 区间是如何变化的?
Region 的 Key 区间是动态变化的,可能因 split 或 merge 操作而改变。
TiKV 中 Region 与 SQL 表之间的关系是什么?
Region 与 SQL 表之间不存在固定的一对一关系,一张表的数据可能跨越多个 Region。