Rust in Everything
基于 tower-http 0.7.1

全景

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

  1. tower-http 解决什么问题:tower 的中间件不知道 HTTP,框架自己的中间件只能用在那个框架里;tower-http 只认 http 和 http-body 两个 crate,同一个 CompressionLayer 能套在 axum 的 Router 上,也能套在一个纯 tower 服务上。代价是 body 类型一路传染。压缩与解压的四个方向只实现了三个。
  2. 一个请求穿过三个时刻:Cors → Trace → Compression → Timeout → handler 一张时序图,标出每层在 call、响应 future 完成、body 流动三个时刻各做什么,谁短路;同一张图换成客户端栈。
flowchart TB
  why[解决什么问题] --> both[服务端、客户端两用]
  why --> cost[代价:body 类型传染]
  moments[三个时刻] --> server[服务端栈]
  moments --> client[客户端栈]
  cost --> skel[02 共同骨架]
  server --> skel

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

💬 关联讨论

发起讨论
加载中...