Оптимизация ресурсов при неравномерной нагрузке - предотвращение перегрузки или недогрузки сервисов за счет автоматического распределения количества реплик для повышения устойчивость сервисов#
Контекст#
В реальных системах нагрузка на сервисы редко бывает равномерной, она колеблется из-за пиковой активности или временных различий между регионами. Сервисы с фиксированным количеством реплик неэффективны в условиях неравномерной нагрузки.
На кластере разные микросервисы нагружены в разное время.
Проблема#
Отсутствие механизма выставления динамически минимального и максимального числа реплик на разных микросервисах.
Решение#
Для решения данной проблемы в Synapse Autoscaler (далее AUSC) используется ProjectCapacityPolicy - механизм динамического управления минимальным и максимальным количеством реплик в зависимости от уровня нагрузки и источников данных.
Использование динамического подхода в отличие от статического позволяет оптимизировать ресурсы:
Рис.1 - Оптимизация ресурсов
Для применения паттерна оптимизация ресурсов при неравномерной нагрузке необходимо:
Создать ProjectCapacityPolicy для контроля выделения ресурсов.
Настроить ProjectCapacityPolicy под потребности:
Указать уровни использования в секции usageLevels с условиями и границами.
Определить для каждого уровня свое минимальное и максимальное количество реплик.
Указать источники данных в секции sources.
Создать ScaledObject для целевого deployment.
Указать в ScaledObject имя уровня в advanced.usageLevels в соответствии с названием уровня из ProjectCapacityPolicy.
Примечание: Подробнее ознакомиться с инструкцией по настройке ProjectCapacityPolicy можно в документе «Autoscaler (AUSC) API Reference» в разделе Спецификация ProjectCapacityPolicy.