Небольшая команда управляла службой PR-сводок на бесплатном сервере без сохранения состояния. Каждый запрос на включение создавал задачу, и каждая задача запрашивала одну автоматически созданную сводку различий из конечной точки свободной модели. В первое утро очередь достигла 600 задач, сервис...
Небольшая команда управляла службой PR-сводок на бесплатном сервере без сохранения состояния. Каждый запрос на включение создавал задачу, и каждая задача запрашивала одну автоматически созданную сводку различий из конечной точки свободной модели. В первое утро очередь достигла 600 задач, сервер оставался без состояния, и каждая неудачная задача была повторно поставлена в очередь с помощью цикла повтора. Конечная точка вернула 429, затем 503, затем очередь вышла за пределы рабочего пула, и весь пакет завис.
Первым побуждением команды было добавить больше работников. Это усугубляло ситуацию, поскольку узким местом была конечная точка, а не сервер. Настоящее решение заключалось в том, чтобы сформировать нагрузку до того, как она достигнет конечной точки, и это формирование должно было находиться в месте, которое выдерживает перезапуск сервера. В этой статье рассматривается небольшая конструкция дозатора, которая соответствует набору ограничений свободного доступа к модели и опции бесплатного сервера.
Раскрытие информации: эта статья была подготовлена в рамках информационно-пропагандистской программы MonkeyCode. Рабочий процесс MonkeyCode с открытым исходным кодом может запускать этот дозатор на конечных точках бесплатной модели и на бесплатном сервере, который не имеет состояния, поэтому очередь должна находиться вне процесса.
Набор ограничений, который заставил дозатор
Три факта определяют границу системы.
Бесплатный сервер не имеет состояния. Любой