Go pipeline 模式

pipeline 模式把一组处理步骤拆成多个阶段,通过 channel 串联数据流,适合表达有明确处理阶段的并发工作流。

#type / concept #status / growing #tech / dev / backend #resource / go

[!info] related notes

Go pipeline 模式

一句话定义

pipeline 模式把处理流程拆成多个阶段,每个阶段通过 channel 连接前后步骤,从而把数据流和并发边界表达得更清楚。

核心机制 / 工作原理

它最适合的不是“很多独立任务”,而是“同一份数据要依次经过多个处理阶段”的场景。

一个典型 pipeline 会包含:

  • 输入阶段
  • 一个或多个处理阶段
  • 输出阶段

每个阶段都可以由 goroutine 驱动,并通过 channel 把结果交给下一阶段。

最小例子 / 最小场景

比如“读取数据 -> 解析 -> 过滤 -> 聚合 -> 输出”的链路,如果每一步都很明确,pipeline 往往比把所有逻辑揉进一个 worker 更清晰。

为什么这部分重要

Go 的 channel 不只是“传个值”,它非常适合把阶段边界显式表达出来。pipeline 正是这种表达方式的典型落地。

边界与易混淆点

  • pipeline 更强调阶段流转,worker pool 更强调并发度控制
  • 阶段越多,越要注意取消传播和关闭顺序
  • 如果数据流并不稳定分阶段,pipeline 反而可能过度设计
创建于 2026/6/20 更新于 2026/6/20