全景
这一部分不进细节,先把整张地图画出来:
- tower 解决什么问题:把「请求 → 响应」抽象成一个 trait,中间件写一次到处用;和 Go 的
func(http.Handler) http.Handler、Finagle 的Service、actix 的Transform比,tower 的关键是一条严格的poll_ready约定,背压靠它实现。 - 一个请求穿过一摞中间件:
ServiceBuilder::new().timeout(..).concurrency_limit(..).service(svc)生成的类型是什么;一张时序图同时画出就绪主线和请求主线。
后面每一部分都是在把这张地图上的某一段放大。
💬 关联讨论
发起讨论加载中...