计算型任务调度不仅要找到一台空闲机器,还要在缓存复用、任务公平和故障恢复之间作出选择。
两个相反目标
优先把相关任务派到已有输入数据的执行节点,可以降低下载成本;但如果始终追求局部性,热门任务组可能长期占用少数节点,其他任务得不到调度。
一种实用策略是分层选择:先在满足资源条件的节点中寻找局部性候选,等待超过阈值后逐步放宽,最终允许任何健康节点执行。
用租约管理执行状态
任务派发后不应永久标记为运行中。执行节点持有有期限的租约并持续续期;租约过期后,调度器才允许重新派发。完成通知必须携带执行代次,避免旧执行覆盖新结果。
批量下发
调度器与执行节点之间采用批量领取可以减少控制面请求,但批次过大会造成节点间不公平,也会放大故障重派。批次应根据任务耗时、节点槽位和队列水位动态调整。
好的调度器不是追求某一个瞬时最优,而是在不断变化的资源状态中维持可解释的退让规则。