Масштабирование пропускной способности Azure Cosmos DB с помощью триггера таймера Функции Azure

Производительность учетной записи Azure Cosmos DB зависит от объема подготовленной пропускной способности, выраженной в единицах запросов в секунду (ЕЗ/с). Распределение ресурсов происходит с гранулярностью в секундах и тарификация производится исходя из максимального количества ЕЗ/с за час. Эта модель подготовленной емкости позволяет службе обеспечивать предсказуемую и согласованную пропускную способность, гарантированную низкую задержку и высокий уровень доступности. Большинство производственных рабочих нагрузок включает в себя использование этих функций. Но в средах разработки и тестирования, в которых Azure Cosmos DB используется только в рабочее время, вы можете увеличить пропускную способность утром и уменьшить ее после завершения рабочего дня.

Пропускную способность можно задать с помощью шаблонов Azure Resource Manager, Azure CLI и Azure PowerShell для учетных записей NoSQL API или с помощью многоязычных пакетов SDK для Azure Cosmos DB. Преимущество использования шаблонов Resource Manager, Azure CLI или PowerShell заключается в том, что они поддерживают все API модели Azure Cosmos DB.

Пример проекта планировщика пропускной способности

Чтобы упростить процесс масштабирования Azure Cosmos DB по расписанию, мы создали пример проекта под названием Azure Cosmos DB throughput scheduler. Этот проект является приложением Функций Azure с двумя триггерами таймера — ScaleUpTrigger и ScaleDownTrigger. Триггеры запускают скрипт PowerShell, который задает пропускную способность для каждого ресурса, определенную в файле resources.json каждого триггера. Триггер ScaleUpTrigger настроен на запуск в 8:00 (UTC), а ScaleDownTrigger — в 18:00 (UTC). Время можно легко изменить в файле function.json для каждого триггера.

Вы можете клонировать этот проект локально и изменить его, чтобы указать ресурсы Azure Cosmos DB для увеличения и уменьшения масштабов, а также задать расписание для выполнения этого процесса. Позже ее можно развернуть в подписке Azure и защитить ее с помощью управляемого удостоверения службы с разрешениями управления доступом на основе ролей Azure (Azure RBAC) с ролью "Оператор Azure Cosmos DB", чтобы задать пропускную способность в учетных записях Azure Cosmos DB.

Дальнейшие шаги