Rust in Everything
基于 pingora 0.9.0

导读

开始读源码之前,先讲清楚两件事:

  1. 怎么读这一卷:0.9.0 的 tag 和 crates.io 包是同一个 commit;请求、服务、缓存三条主线每一步落在哪个函数、哪一页讲;实验为什么只在 macOS 上做、tokio 为什么必须钉在 1.53.2(tokio 1.54 的 #8494 让 pingora 0.9.0 接受第一个连接就 panic,修复 5b30d71 还没发版);门面 crate pingora 的 feature 各打开什么:TLS 后端开两个时 pingora-core 报 E0252,一个不开时 add_tls 照样编得过、握手时才 panic,patched_http1 配 crates.io 上的 httparse 编不过。
  2. 源码地图:用 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[入口与规模]

💬 关联讨论

发起讨论
加载中...