Cloud 来自用户的循环CPU绑定操作

Cloud 来自用户的循环CPU绑定操作,cloud,message-queue,distributed-computing,messagebroker,Cloud,Message Queue,Distributed Computing,Messagebroker,我们有最终用户API来执行一些长时间(30s-1h)的CPU操作。 用户可以创建任务,多次轮询任务状态,最终得到结果 在内部,我们有任务队列和一些能够处理这些任务的工人 当User1创建了很多大任务,紧接着User2创建了一个小任务时,就会出现问题。User2希望快速得到结果,但所有工作人员都在处理User1的任务。来自User1的任务位于队列的末尾 期望是以循环方式处理来自两个用户的任务 是否有一些生产就绪的解决方案来解决此类问题 (更新)发现了相同的问题: 一种可能的方法是引入任务优先级 例

我们有最终用户API来执行一些长时间(30s-1h)的CPU操作。 用户可以创建任务,多次轮询任务状态,最终得到结果

在内部,我们有任务队列和一些能够处理这些任务的工人

当User1创建了很多大任务,紧接着User2创建了一个小任务时,就会出现问题。User2希望快速得到结果,但所有工作人员都在处理User1的任务。来自User1的任务位于队列的末尾

期望是以循环方式处理来自两个用户的任务

是否有一些生产就绪的解决方案来解决此类问题

(更新)发现了相同的问题:
一种可能的方法是引入任务优先级

例如,根据估计的任务执行时间,区分小任务、中任务和大任务。然后,具有不同优先级的任务将被发送到不同的队列。因此,最后,
用户
可以轮询其特定任务的所有优先级队列(S、M和L),然后通过在单个队列中等待更快地找到结果


这种方法可能有两种变体。例如,
用户
可以自己区分S/M/L,并知道要精确轮询哪个队列(这样就消除了轮询所有队列)。或者,可以有一些
dispatcher
组件/服务,这些组件/服务将全局执行任务,并通知
用户应轮询哪个队列。

我假设可以在将任务分派给工作者之前确定任务的大小。然后,您需要能够暂停并恢复长时间运行的任务,或者为小任务单独安排工作人员。