Rust in Everything
基于 tower 0.5.3

动手

前面各部分是读 tower 的源码,这一部分反过来:不依赖 tower,自己写一个能跑的最小版本。写一遍之后,poll_ready 为什么要先占资源、ResponseFuture 为什么要带着许可、Stack 为什么是 Stack<Inner, Outer>,都会变成你自己做过的决定。

  1. 从零写一个 tower:两个 trait 加一个 Builder;Timeout 只动请求主线,ConcurrencyLimit 两条主线都动;一个用通道实现的 mock 让测试代码决定什么时候回响应,用它看到 poll_ready 返回 Pending、许可归还时唤醒调用方。
flowchart TB
  tr["Service 与 Layer"] --> st["Stack 与 Builder"]
  st --> to[Timeout]
  st --> cl[ConcurrencyLimit]
  to --> mk[手写 mock]
  cl --> mk
  mk --> bp[验证背压]

💬 关联讨论

发起讨论
加载中...