Go worker pool
worker pool 是 Go 中常见的并发组织模式,用有限数量的工作协程处理任务队列,以控制并发度和资源占用。
#type / concept
#status / growing
#tech / dev / backend
#resource / go
[!info] related notes
- 所属 MOC: Go 服务工程化 MOC
- 前置概念: Go goroutine, Go channel, Go sync 包
- 并列概念: Go pipeline 模式
Go worker pool
一句话定义
worker pool 是一种并发组织模式:先创建有限数量的 worker goroutine,再把任务持续投递给它们处理。
核心机制 / 工作原理
worker pool 主要想解决:
- 任务很多,但不能无限制开 goroutine
- 需要控制并发度
- 需要更稳定地使用 CPU、连接池或外部资源
它通常包含:
- 任务输入通道
- 固定数量的 worker
- 等待收尾或汇总结果的同步机制
最小例子 / 最小场景
比如批量处理文件、消费消息、并发调用外部接口时,都可能需要限制同时进行的任务数,这时 worker pool 比“每个任务直接 go 一下”更稳。
为什么这部分重要
很多 Go 程序的并发问题,不是并发能力不够,而是并发开得太随意。worker pool 提供了一种更工程化的限流和调度方式。
边界与易混淆点
- worker pool 不是所有并发问题的默认答案
- 任务之间如果有明显阶段关系,pipeline 往往更自然
- 限制 goroutine 数量,不自动等于吞吐就最优