2025-01-19 · Go
goroutine 与 worker pool 的取舍
扇出写起来很顺手,直到某个慢任务拖垮整体延迟。
前言
每个请求开一个 goroutine 是 Go 的惯用写法,也可能同时是风险。文章测量无界并发与有界工作池的差异,再用真实数字决定队列大小,而不是凭直觉拍脑袋。
现场笔记
在处理 Go 问题的过程中,反复出现的几个模式:
- 简单的版本撑过了每次重构,聪明的版本没有。
- 边做边写的文档,比事后补写的耐用得多。
- 同一个问题第二次出现时,它就已经是一个模式了——给它起个名字。
可以直接抄的检查清单
- 问题可以用一条命令复现。
- 修复附带一个没有它就会失败的测试。
- 作者本人之外的人也在自己的机器上跑过。
写在最后
写下未来那个自己真正会读的短版本——这就是全部的诀窍。