Rust 高并发实战(2):Future、Poll/Waker 与 Tokio 结构化并发
· 阅读需 7 分钟
async fn返回的是一台惰性状态机;只有 executor 持续 poll,它才会向前执行。
本期理解 Tokio task 的调度与取消语义,并实现不泄漏子任务的 fan-out/fan-in。
Rust 异步运行时与网络应用生态
查看所有标签
async fn返回的是一台惰性状态机;只有 executor 持续 poll,它才会向前执行。
本期理解 Tokio task 的调度与取消语义,并实现不泄漏子任务的 fan-out/fan-in。
async 让等待更便宜,Semaphore 决定允许多少等待同时存在。
本期实现 /aggregate:每个请求并发访问多个下游,但入口和依赖都有独立硬上限。
编译通过证明内存访问安全,不证明业务事务完整、锁不会死锁或 Future 可以在任意 await 点被取消。
async worker 上一次 200 ms 同步阻塞,影响的可能不是一个请求,而是同线程上的整批 task。
正常流量下快只是起点;过载时资源有界、故障后能够恢复,才是生产高并发。
Rust 消灭了一大类内存数据竞争,但生产高并发仍需要主动设计容量、取消、背压、锁顺序和故障恢复。
这个系列使用 Rust + Tokio + Axum 构建与 Go 系列相同的高扇出聚合服务。相同的负载模型便于比较语言差异,文章重点则放在 Future、协作式调度、Send/Sync、取消安全和异步诊断。

这张由 ImageGen 生成的系列概念图以铜橙色任务胶囊表现 Future 状态,以环形轨道表现 reactor/waker,以透明闸门表现 Semaphore 与取消边界:任务只有在资源就绪并取得许可后,才进入右侧有限的执行核心。