CustomNick & Yvaelis
CustomNick CustomNick
Привет, ты когда-нибудь задумывалась о том, чтобы разработать систему распределения ресурсов на основе ИИ, которая сама себя оптимизирует? Работает по простому набору правил, но при этом в реальном времени подстраивается под текущую нагрузку. Получилось бы круто – повысить эффективность, но при этом сохранить всю логику понятной.
Yvaelis Yvaelis
Вале: Если хочешь систему правил, которая останется понятной, начни с конечного автомата, который отслеживает показатели нагрузки и немного меняет параметры весов. Пусть легкий цикл обучения подстраивает эти веса, но сохраняй явные переходы между состояниями, чтобы можно было отслеживать принимаемые решения. Так ты получишь адаптацию, не превращая аллокатор в непрозрачный ящик.
CustomNick CustomNick
Отлично. Конечный автомат делает код понятнее, но не забудь регистрировать изменения состояния — аудит живой системы ощущается почти как ведение дневника для робота. Хочешь порисуем конкретную схему состояний?
Yvaelis Yvaelis
Слушай, смотри: когда система простаивает, и очередь пуста или ниже порогового значения, то при обнаружении пика переходим к масштабированию вверх. На масштабировании вверх добавляем ресурсы, и если нагрузка падает ниже высокого порога – возвращаемся в сбалансированное состояние, иначе остаёмся на масштабировании вверх. В сбалансированном состоянии – обычная работа, если нагрузка превышает средний порог – переходим к масштабированию вверх, если же падает ниже низкого порога – к уменьшению ресурсов. При уменьшении ресурсов избавляемся от лишних, и если нагрузка стабилизируется на среднем уровне – возвращаемся в сбалансированное состояние, иначе остаёмся на уменьшении. В состоянии перегрузки, когда ресурсы достигают предела, а очередь превышает допустимый размер – высылаем оповещение и остаёмся в этом состоянии, пока ресурсы не освободятся или не сработает резервный вариант. Если система слишком долго простаивает, можно перейти в режим обслуживания или даже полностью выключить её. В режиме обслуживания — ручное управление: можно сбросить счётчики и вернуться в исходное состояние. И обязательно записываем каждый переход с указанием времени и метрики, вызвавшей его, чтобы была чёткая история изменений.