知识卡片

Master拆分调度

普通读书笔记卡 · 1537

内容

Master-Worker 模式把任务分配和执行拆开:Master 持有若干 Worker,自己用阻塞队列接收任务、独立线程轮流分给 Worker;每个 Worker 也有阻塞队列接收分配的任务,执行完回调 Master 的结果处理函数(如累加求和)。这种”接收-分发-执行-回调汇总”结构适合任务可拆分、结果可合并的场景,核心风险在任务队列容量、结果聚合并发安全、单个子任务失败的重试策略。

参考来源

- 位置:《Java高并发核心编程.卷2,多线程、锁、JMM、JUC、高并发设计模式》第8章《高并发设计模式》8.2.1节《Master-Worker模式的参考实现》(源文件:_epub-src/OEBPS/Text/chapter264.xhtml) - 结论依据:原文给出Master类持有Worker集合和任务队列、用独立线程轮询分发任务,Worker类各自持有任务队列、执行完任务后回调Master的resultCallBack做结果归并(AtomicLong累加)的完整实现,因此推出本卡关于分配与执行拆分、核心风险点的结论。 - 原始内容:Master负责接收客户端提交的任务,然后通过阻塞队列对任务进行缓存。Master所拥有的线程作为阻塞队列的消费者,不断从阻塞队列获取任务并轮流分给Worker……Worker所拥有的线程作为局部任务的阻塞队列的消费者,不断从阻塞队列获取任务并执行,执行完成后回调Master传递过来的回调函数。