Как выбирать задачи на выполнение в зависимости от их размера и возраста?

Есть растущий сервис, суть которого считывать несколько раз в сутки некие объекты. Число объектов N. Они по чуть-чуть постоянно добавляются и удаляются пользователями, в целом тренд растущий.

Каждый объект имеет два свойства: массу М и timestamp Т когда его последний раз считывали.

Каждые X минут по крону набирается очередная пачка объектов на исполнение, которое обновит их T. В пачке ограничена общая масса объектов — не больше лимита L.

Я пытаюсь понять как решить три задачи:
  1. алгоритм для выбора объектов в очередную пачку;
  2. ввести разные классы объектов: обычные, приоритетные (как минимум попадают в каждый n-ный батч) и частые — точно идут в каждый батч;
  3. примерно прогнозировать когда нынешняя система исчерпает свои мощности — и нужно будет запускать ещё один сервер или увеличивать лимит L
Какая модель описывает такую систему?

Вижу несколько стратегий:

A. «педаль в пол» — в каждую пачку упихивать как можно больше. По мере роста N каждый из объектов будет обновляться всё реже;

B. целиться на постянный средний интервал обновления любого объекта. Эффективность ниже. По мере роста N будет стремиться к 100% загрузка кадого батча — значит, время увеличивать мощность.

C. — ?
  • Вопрос задан
  • 2393 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы