加载中...
扇出/扇入是一种并发处理模式,先把一个大任务拆分成多个子任务并行分发出去(扇出),再等所有子任务完成后把结果汇聚合并(扇入)。它能充分利用并行资源加速处理,广泛用于批处理、无服务器编排和数据管道。

| 中文名 | 扇出/扇入模式 |
| 英文名 | Fan-out/Fan-in |
| 思想来源 | 分治与并发 |
| 两个阶段 | 扇出、扇入 |
| 常见场景 | 批处理、无服务器、数据管道 |
扇出/扇入模式(Fan-out/Fan-in)是一种并发与分布式处理模式。扇出(Fan-out)指把一个任务分解为多个可并行执行的子任务,并将它们分发到多个工作单元;扇入(Fan-in)指等待这些并行子任务全部完成后,收集并聚合它们的结果为最终输出。
该模式本质上是分治思想在并发场景下的体现。当一项工作可以被切分为彼此独立的部分时,并行执行能显著缩短总耗时;而汇聚阶段则负责等待和合并。它在无服务器计算(如函数编排)、消息队列消费、MapReduce 类数据处理以及 Go 语言的并发编程中非常常见。
常见场景包括:同时向多个下游服务发起请求并合并响应;把大文件分片并行处理后汇总;无服务器工作流中并行调用多个函数再收敛;Go 中用多个 goroutine 消费任务、再用一个通道收集结果。它适合计算密集或 I/O 密集且可并行拆分的工作负载。
问:扇出时并行度是不是越高越好?答:不是。并行度受限于 CPU、内存、下游服务承载能力等资源,过高会引发资源争用、限流甚至雪崩,通常需要设置合理的并发上限。
问:扇入阶段如何处理部分子任务失败?答:需预先约定策略,例如快速失败、忽略失败项只聚合成功结果,或对失败子任务进行重试,视业务对完整性的要求而定。

| 中文名 | 扇出/扇入模式 |
| 英文名 | Fan-out/Fan-in |
| 思想来源 | 分治与并发 |
| 两个阶段 | 扇出、扇入 |
| 常见场景 | 批处理、无服务器、数据管道 |
登录 后参与讨论
暂无讨论,来发表第一条评论吧