Rust in Everything
基于 tower 0.5.3

全景

这一部分不进细节,先把整张地图画出来:

  1. tower 解决什么问题:把「请求 → 响应」抽象成一个 trait,中间件写一次到处用;和 Go 的 func(http.Handler) http.Handler、Finagle 的 Service、actix 的 Transform 比,tower 的关键是一条严格的 poll_ready 约定,背压靠它实现。
  2. 一个请求穿过一摞中间件:ServiceBuilder::new().timeout(..).concurrency_limit(..).service(svc) 生成的类型是什么;一张时序图同时画出就绪主线和请求主线。

后面每一部分都是在把这张地图上的某一段放大。

💬 关联讨论

发起讨论
加载中...