导读
开始读源码之前,先讲清楚两件事:
- 怎么读这一卷:0.9.0 的 tag 和 crates.io 包是同一个 commit;请求、服务、缓存三条主线每一步落在哪个函数、哪一页讲;实验为什么只在 macOS 上做、tokio 为什么必须钉在 1.53.2(tokio 1.54 的 #8494 让 pingora 0.9.0 接受第一个连接就 panic,修复
5b30d71还没发版);门面 cratepingora的 feature 各打开什么:TLS 后端开两个时pingora-core报 E0252,一个不开时add_tls照样编得过、握手时才 panic,patched_http1配 crates.io 上的httparse编不过。 - 源码地图:用
cargo tree核实的 crate 依赖图:pingora-proxy无条件依赖pingora-cache,pingora-limits和pingora-memory-cache不在门面 crate 的依赖里;每个 crate 的入口文件、一句话职责和行数;pingora-core里九个目录各管什么;上游docs/user_guide每篇对应本卷哪一页。
flowchart TB read[怎么读这一卷] --> ver[锁定版本] read --> lines[三条主线] read --> exp["实验环境 tokio 1.53.2"] read --> feat["feature 与约束"] map[源码地图] --> deps["依赖图 cargo tree"] map --> core["pingora-core 目录"] map --> size[入口与规模]
💬 关联讨论
发起讨论加载中...