一、简单的任务调度系统一般通过单个先进先出队列顺序执行。
优势:实现简单,流程清晰。
可能的缺点:如果出现一个长任务后接了多个短任务,或者一段时间内较多施工任务出现失败重试,都容易堵塞后续任务,最终导致多个任务超时,影响客户体验验。
二、新方法。
1. 构造三级有序队列,队列之间优先级情况为为:P(1) > P(2) > P(3),在执行施工任务时,优先级高的队列中的任务先处理,并且只会在当前队列所有施工任务执行完后才会进行下一优先级队列的任务执行。 队列1:特殊队列,只有带特殊标记(人工打标)的任务才出现在该队列中,按标记值最大优先排序。 队列2:超时任务队列,队列中的任务均满足δ < T,按总等待时长θ 最大优先排序。 队列3:未超时任务队列,队列中的任务均满足δ >= T,使用最早截止时间优先算法,按δ 最小优先排序。 假设每个施工任务接收时间为α,任务执行耗时β,超时阈值γ( γ > β),由此可得到最早截止时间δ = f(α, β, γ) = α + γ - β,假设当前时间为T,任务总等待时长θ = f(α, β) = T – α + β。
2. 接收到新施工任务后,根据满足条件进入相应的有序队列,入队后队列仍然保持有序。
3. 有工作线程空闲时,任务执行程序主动向多级队列申请施工任务。
4. 收到执行申请后多级队列触发自检测,筛选不再满足当前队列约束条件的施工任务,筛选出的任务重新按新任务入队流程处理。
5. 所有任务入队就绪后,多级队列按队列间优先级出队一个任务给到工作线程执行。
6. 任务如果执行失败则失败次数+1,然后判断失败次数是否达到设定阈值,如果未达到则任务重新按新任务入队流程处理。
优点:主要是通过使用多级异构动态队列,对未超时、超时、带特殊标记三种不同情况的施工任务进行分类与条件排序,实现对任务的可控合理调度,有效降低任务超时概率以及已超时任务的等待时间,同时还提供了可人工干预的手段。