TinyKV Lab 路线图
本文整理自本地 TinyKV 项目文件:
tinykv-understanding/labs/tinykv-lab-roadmap.md。
系列顺序:TinyKV Lab 路线图 -> TinyKV Lab1:StandaloneKV -> TinyKV Lab2:RaftKV -> TinyKV Lab3:Multi-RaftKV -> TinyKV Lab3B:Region Split 后的状态收敛问题 -> TinyKV Lab4:Transactions -> TinyKV 测试指南。
资料来源:
- Project 1 StandaloneKV: https://yunpengn.github.io/tinykv/doc/project1-StandaloneKV.html
- Project 2 RaftKV: https://yunpengn.github.io/tinykv/doc/project2-RaftKV.html
- Project 3 MultiRaftKV: https://yunpengn.github.io/tinykv/doc/project3-MultiRaftKV.html
- Project 4 Transactions: https://github.com/talent-plan/tinykv/blob/course/doc/project4-Transaction.md
说明:TinyKV 官方叫 Project 1/2/3/4,简历里很多人会叫 Lab 1/2/3/4。下面先按 Lab 来写。
总路线
TinyKV 的路线不是一上来就做分布式,而是逐层加能力:
1 | Lab1: 单机 KV |
把官方 Project、测试命令、代码范围放到一张表里:
| Lab | 官方阶段 | 主要工作 | 主要测试 |
|---|---|---|---|
| Lab1 | Project1 | StandaloneStorage + Raw KV API |
make project1 |
| Lab2A | Project2 Part A | Raft 选主、日志复制、RawNode/Ready | make project2aa、project2ab、project2ac、project2a |
| Lab2B | Project2 Part B | raftstore 把 KV 请求走 Raft 后再 apply | make project2b |
| Lab2C | Project2 Part C | log GC、snapshot、落后副本恢复 | make project2c |
| Lab3A | Project3 Part A | conf change、leader transfer | make project3a |
| Lab3B | Project3 Part B | ChangePeer、TransferLeader、Region Split | make project3b |
| Lab3C | Project3 Part C | scheduler heartbeat、balance region | make project3c |
| Lab4A | Project4 Part A | MVCC 版本、锁、提交记录 | make project4a |
| Lab4B | Project4 Part B | KvGet、KvPrewrite、KvCommit |
make project4b |
| Lab4C | Project4 Part C | KvScan、rollback、check/resolve lock |
make project4c |