Есть растущий сервис, суть которого считывать несколько раз в сутки некие объекты. Число объектов
N. Они по чуть-чуть постоянно добавляются и удаляются пользователями, в целом тренд растущий.
Каждый объект имеет два свойства: массу
М и timestamp
Т когда его последний раз считывали.
Каждые
X минут по крону набирается очередная пачка объектов на исполнение, которое обновит их
T. В пачке ограничена общая масса объектов — не больше лимита
L.
Я пытаюсь понять как решить три задачи:
- алгоритм для выбора объектов в очередную пачку;
- ввести разные классы объектов: обычные, приоритетные (как минимум попадают в каждый n-ный батч) и частые — точно идут в каждый батч;
- примерно прогнозировать когда нынешняя система исчерпает свои мощности — и нужно будет запускать ещё один сервер или увеличивать лимит L
Какая модель описывает такую систему?
Вижу несколько стратегий:
A. «педаль в пол» — в каждую пачку упихивать как можно больше. По мере роста
N каждый из объектов будет обновляться всё реже;
B. целиться на постянный средний интервал обновления любого объекта. Эффективность ниже. По мере роста
N будет стремиться к 100% загрузка кадого батча — значит, время увеличивать мощность.
C. — ?