本章目标
读完本章,你应该能够回答下面几个问题:
- Milvus 顶层目录分别负责什么。
- Go 服务层、C++ 执行层、Rust Tantivy 绑定、Proto 接口分别放在哪里。
cmd、internal、pkg、client、tests应该按什么顺序阅读。- 如何从一个用户 API 追到 Proxy、Coord、Node 和底层执行引擎。
- 如何用
rg、go test、日志和测试文件辅助源码阅读。
前两章我们已经知道 Milvus 是什么,以及如何把它运行起来。从本章开始,我们进入真正的源码阅读阶段。阅读大型项目最怕“一打开仓库就迷路”,所以本章先建立源码地图。
1. 先记住一条主线
Milvus 源码很多,但初学者不应该从目录树一层层背起。更好的方式是先记住一条用户请求主线:
Client SDK -> Proxy -> RootCoord / DataCoord / QueryCoord / StreamingCoord -> DataNode / QueryNode / StreamingNode -> internal/core C++ 执行层 -> 对