怎么阅读 TiKV 源码

忽略那么多细节,大概看看整体流程就行。我相信写代码的时候也不是全都设计的很好再在合适的地方加check,感觉是一开始一个大逻辑,后面加一点逻辑,就在相应位置加个 check,慢慢就加成这样了。

要么就先仔细看看每个模块,然后串起来。比如说 raft-rs 这个就是处理 raft 消息的,你想了解可以看看,如果了解了这个,后面遇到 raft.step 之类的就不用走进去了。看代码就快了。

基本上大的流程就是这样:

tidb=> grpc => scheduler => raft-batchsystem=>apply-batchsystem
其中向 raft-batchsystem 发消息是向 router 发送,向apply-batchsystem 发送消息是向 apply-router 发送。

然后可以跟着一个流程看看,比如说:写入,就是在 raft-batchsystem 里面搞个 proposal,然后走一圈raft,然后 collectready 的地方把 commit 的消息拿出来,构造一个 applytask,发送给 apply-batchsystem 写入rocksdb,完事儿。

1 个赞