Реактивное автоматическое масштабирование приводит к медленному реагированию на пиковые нагрузки #4
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Проблема
Реализация кластерного автомасштабировщика использует простую пороговую логику для принятия решений о масштабировании. Такой реактивный подход имеет ряд ограничений. Решения о масштабировании принимаются уже после того, как нагрузка выросла, что приводит к задержкам в реагировании на пиковые нагрузки. Частые операции масштабирования создают эффект колебаний при изменяющихся рабочих нагрузках, вызывая излишнюю смену узлов и дополнительные затраты на перебалансировку.
Также присутствует неэффективное использование ресурсов — система либо избыточно выделяет ресурсы в обычном режиме, либо недообеспечивает ими во время пиков.
При внезапных пиковых нагрузках (например, QPS возрастает с 1000 до 10000 за 10 секунд) системе требуется 30 секунд для обнаружения превышения порога загрузки CPU, 2 минуты на подготовку новых узлов, и к моменту готовности новых узлов пик уже проходит, что приводит как к ухудшению пользовательского опыта, так и к нерациональному расходованию ресурсов.
Архитектурная проблема
Как спроектировать алгоритм автоматического масштабирования, который учитывает не только текущую нагрузку, но и будущие значения на основе исторических данных и трендов?
Предлагаемые направления исследований
Соответствующие файлы с исходным кодом
internal/autoscaling/cluster_autoscaler.gointernal/config/config.go(AutoscalingConfig)