Круговые операции с процессором от пользователей - PullRequest
0 голосов
/ 23 сентября 2019

У нас есть API-интерфейс конечного пользователя для выполнения некоторых длительных (30 с-1 ч) операций с привязкой к процессору.Пользователь может создавать задачи, опрашивать их состояние много раз и, наконец, получать результат.

Внутренне у нас есть очередь для задач и некоторые работники, которые могут выполнять эти задачи.

Проблема возникает, когда пользователь1 создает многобольшие задачи, и сразу после этого User2 создает одну маленькую задачу.Пользователь2 ожидает получить результат быстро, но все работники обрабатывают задачи от Пользователя1.Задача от User1 находится в конце очереди.

Ожидается, что задачи обоих пользователей обрабатываются в циклическом порядке.

Есть ли какое-либо готовое к работе решение для решения такого рода проблем?

(ОБНОВЛЕНИЕ) Найден тот же вопрос: Каковы некоторые механизмы очередей для реализации циклических очередей?

1 Ответ

1 голос
/ 27 сентября 2019

Вероятно, одним из подходов будет введение приоритетов задач.

Например, в зависимости от предполагаемого времени выполнения задачи - различать маленькие (S), средние (M) и большие (L).Затем задачи с разными приоритетами будут отправляться в разные очереди.Итак, наконец, user может опрашивать все приоритетные очереди (S, M и L) для своей конкретной задачи и быстрее находить результат, чем ожидание в одной очереди.

Может быть несколько вариантов этого подхода,Например, user может самостоятельно различать S / M / L и точно знать, какую очередь следует опросить (таким образом исключается опрос всех очередей).В качестве альтернативы может существовать некоторый компонент / служба dispatcher, который сделает это глобально и уведомит users, какую очередь им следует опросить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...