取消术语学:同步取消、异步取消与优雅关闭的清晰区分
来源: matklad.github.io — 2026-08-31
概述
matklad(TigerBeetle 与 rust-analyzer 作者)写下的短札记,厘清三件常被混淆的事:同步取消是控制流结构,通过抛异常/返回错误展开栈;异步取消是两方之间的通信协议,一方请求后须等对方确认并收尾;优雅关闭则是处理连接的应用层设计模式。他结合 TigerBeetle 的 Grid.cancel(异步)、StateMachine.reset(同步)等实例说明如何正确分层,并吐槽团队里把异步收尾误称作 graceful shutdown 是不准确的——TigerBeetle 全程是 crash-only 的。
核心要点
- 同步取消是控制流结构,靠异常/错误展开栈
- 异步取消是两方通信协议,需等待对方确认收尾
- 优雅关闭是应用层设计模式,用于处理连接
- Rust 让同步取消太容易,却缺乏良好的异步取消机制
- TigerBeetle 用异步取消 Grid + 同步 reset 其余层
- 在分布式系统中,极慢节点与崩溃别无二致
金句
崩溃只是慢的一种程度——在分布式系统中,极慢的节点看起来和崩溃完全一样。
👍 0
👎 0
返回 Lobsters 首页