土法炼钢兴趣小组的算法知识备份

【TiKV / HTAP 内核】Region · Multi-Raft · PD · Percolator · TiFlash

文章导航

分类入口
databasestorage
标签入口
#tikv#tidb#tiflash#htap#multi-raft#region#percolator#pd#tso#distributed-kv

目录

TiKV / HTAP 内核:Region · Multi-Raft · PD · Percolator · TiFlash

RocksDB 内核 把单 Region 内的 LSM 讲清了;Raft 旗舰解读raft-deep 把协议不变量讲清了;HTAP 新范式 把行列双引擎与新鲜度档位讲清了。中间仍缺一层:一次 Put 如何经 Multi-Raft 的 raftstore Apply 落到 RocksDB,Percolator 如何落在 lock/write CF,TiFlash Learner 如何定义分析读可见时延

本系列以 TiKV 7.x/8.x 为内核主线,写:

系列状态:已完成(2026-07-16)。18 篇已发布。规划见 PLAN.md

版本锚定:TiKV / PD / TiFlash 7.x 或 8.x(文内钉具体文档版本);CockroachDB 在对照篇标注当时文档版本。本机实验以 TiUP playground / 单机为主,见 PLAN 实验台账;不伪造千节点集群吞吐。

适合谁看

在知识栈中的位置

系列 本系列关系
单机 LSM rocksdb 第 1–2、5、16、18 篇外链
Raft 协议 raft-explained / raft-deep 第 4–6 篇对读,不复述教科书
Percolator 模型 distributed/30 第 10–11 篇落地
再平衡叙事 distributed/27 第 7–8 篇机制加深
KV 选型对照 distributed/39 第 1、16、18 篇回链
TiKV / HTAP 工程链路 本系列 Region → 事务 → TiFlash
HTAP 范式 db-frontier/12 第 1、14–15、18 篇对读
列存内核 columnar-engine 第 14 篇不重写

一、这个领域最值得关注的 5 个问题

  1. Region 如何把全局有序 KV 切成 Multi-Raft 组? → 第 1–4、7–8 篇:range、epoch、一 Region 一 Raft 组、split/热点。

  2. 一次 Put 如何经 raftstore → Apply → RocksDB? → 第 5–6 篇:propose/append/commit/apply;snapshot 与 log GC。

  3. PD / TSO 如何保证调度与时间戳? → 第 7–9 篇:heartbeat、调度算子、物理+逻辑时钟。

  4. Percolator 2PC / 悲观事务在 TiKV 上如何落锁与 Resolve? → 第 10–11 篇:三 CF、TTL、ResolveLock。

  5. TiFlash Learner 如何定义分析读新鲜度?何时不该叫 HTAP? → 第 14–15、18 篇:可见时延与选型边界。

二、篇目依赖关系与推荐阅读路径

flowchart TD
  A["01 HTAP KV overview"] --> B["02 Key MVCC"]
  A --> C["03 Region model"]
  C --> D["04 Multi-Raft"]
  D --> E["05 raftstore write"]
  E --> F["06 Snapshot log GC"]
  C --> G["07 PD scheduling"]
  G --> H["08 Split hotspot"]
  G --> I["09 TSO"]
  B --> J["10 Percolator"]
  I --> J
  J --> K["11 Pessimistic ResolveLock"]
  E --> L["12 Coprocessor"]
  L --> M["13 TiDB SQL boundary"]
  F --> N["14 TiFlash Learner"]
  N --> O["15 Freshness"]
  D --> P["16 Cockroach compare"]
  K --> Q["17 Troubleshooting"]
  H --> Q
  O --> R["18 Selection"]
  P --> R
  Q --> R
路径 篇目 适合
必读核心 1 → 3 → 4 → 5 → 9 → 10 → 14 → 18 快速建立坐标系
从 RocksDB 上来 1 → 2 → 5 → 10 → 18 LSM 读者补分布式层
从 Raft 协议来 4 → 5 → 6 → 14 → 16 协议读者补生产路径
事务与锁 2 → 9 → 10 → 11 → 17 排查锁冲突
HTAP / 分析 1 → 14 → 15 → 18 frontier/12 读者下沉
完整通读 1 → … → 18 系统掌握

三、目录与每篇价值点

第一部分:全景与本地引擎

  1. HTAP / 分布式 KV 全景:四件套与站内分工
    • TiDB–TiKV–PD–TiFlash;与 rocksdb、Raft、frontier/12 分工图。
  2. Key 编码与 MVCC:三 CF 与时间戳
    • user key + start_ts;default/lock/write;与 RocksDB Snapshot 分层。
  3. Region 模型:range、epoch、peer
    • 有序键空间切分;纠正「一张表一个 Raft」。
  4. Multi-Raft:一 Region 一 Raft 组
    • 与 etcd 单 Raft 对照;跨 Region 事务开放问题。

第二部分:写路径与副本

  1. raftstore 写路径:propose 到 Apply
    • append/commit/apply;异步 apply 边界。
  2. Snapshot、log GC 与副本迁移
    • 快照与截断;Learner 预告。

第三部分:PD 与时间戳

  1. PD 元数据与调度
    • heartbeat;transfer-leader / move-peer。
  2. Split / Merge / 热点
    • region size 与热点调度;对读 distributed/27。
  3. TSO:物理加逻辑的时间戳
    • 分配路径;与 Spanner TrueTime 对照一句。

第四部分:事务

  1. Percolator 乐观事务落地
    • prewrite/commit;lock CF;对读 distributed/30。
  2. 悲观事务与 ResolveLock
    • TTL、死锁边界;纠正「TiKV 无锁」。

第五部分:计算下推与 SQL 边界

  1. Coprocessor:下推与 DAG
    • 计算下推边界;与 query-engine 对照一句。
  2. TiDB SQL 层边界:如何打到 Region
    • 只到路由与分布式计划轮廓;不写优化器全书。

第六部分:TiFlash 与对照

  1. TiFlash Learner:日志到列存
    • Raft Learner;与 columnar-engine 分工。
  2. 新鲜度与一致性
    • 可见时延;回链 frontier/12 三档。
  3. CockroachDB 对照:range + Raft
    • 同源叙事差异;OceanBase 一句边界。

第七部分:排障与选型

  1. 生产排障:热点、锁、TSO、apply
    • 症状→机制决策树。
  2. 选型与阅读地图
    • TiKV vs etcd vs FDB vs RocksDB vs 湖+CDC;系列收束。

四、与相邻系列的分工

话题 本系列 相邻系列
单机 LSM / CF 第 2/5 篇之上的分布式层 rocksdb
Raft 选举与安全不变量 第 4–6 篇只谈 Multi-Raft 落点 raft-explained
Percolator 论文模型 第 10–11 篇 TiKV 落地 distributed/30
再平衡故事 第 7–8 篇 PD 机制 distributed/27
HTAP 范式与基准 第 14–15、18 篇工程链路 db-frontier/12
列存格式 / 向量化 第 14 篇不重写 columnar-engine
KV 产品对比 第 16/18 篇回链 distributed/39

参考


返回 数据库索引 · rocksdb · db-frontier/12

同主题继续阅读

把当前热点继续串成多页阅读,而不是停在单篇消费。

2026-07-16 · database / storage

【TiKV / HTAP 内核】TSO:物理加逻辑的全局时间戳

拆解 PD 的 TSO 如何用 46 位物理毫秒 + 18 位逻辑计数器分配全局单调时间戳,PD leader 如何靠 etcd 时间窗口做故障恢复、客户端如何批量取号;用一句话对照 Spanner TrueTime 的硬件不确定区间路线与 Milvus 的 GuaranteeTs 用法。

2026-07-16 · db / storage

数据库内核实验索引

汇总本站数据库内核文章:PostgreSQL / MySQL InnoDB / 列存引擎 / 数据湖与开放表格式 / 流式数据处理 / 分布式 OLAP 查询引擎 / RocksDB 内核 / 向量检索引擎 / Redis 缓存内核 / 全文检索引擎 / TiKV·HTAP 内核,以及 LSM-Tree 从零实现实验。


By .