Создание контейнеров и баз данных Azure Cosmos DB с автомасштабированием

Azure Cosmos DB позволяет настроить стандартную (вручную) или автомасштабируемую пропускную способность для баз данных и контейнеров. Автомасштабирование настраивает пропускную способность (RU/с) в соответствии с рабочей нагрузкой, обеспечивая высокую производительность и экономичность.

Случаи использования

Автоматическое масштабирование выделенной пропускной способности идеально подходит для критически важных рабочих нагрузок с переменными или непредсказуемыми шаблонами трафика, которые требуют соглашений об уровне обслуживания (SLA) для высокой производительности и масштабируемости. Автомасштабирование по умолчанию масштабирует рабочие нагрузки на основе наиболее активного региона и секции. Для неуниформных рабочих нагрузок, имеющих разные шаблоны рабочих нагрузок в разных регионах и секциях, это масштабирование может привести к ненужным масштабированиям. Динамическое масштабирование или динамическое автомасштабирование — это улучшение автомасштабирования, применяемое повсеместно, которое помогает масштабировать такие разнородные рабочие нагрузки независимо на основе использования, по каждому региону и на уровне раздела. Динамическое масштабирование помогает снизить расходы, если вы часто сталкиваетесь с горячими разделами или имеете несколько регионов.

Преимущества автоматического масштабирования

Базы данных и контейнеры Azure Cosmos DB, настроенные с автомасштабированием подготовленной пропускной способности, имеют следующие преимущества:

  • Просто: Автоматическое масштабирование упрощает управление производительностью RU/s, устраняя необходимость в пользовательских скриптах или ручном масштабировании.

  • Масштабируемость. Базы данных и контейнеры автоматически масштабируют подготовленную пропускную способность по мере необходимости. Нет нарушений клиентских подключений, приложений или соглашений об уровне обслуживания Azure Cosmos DB.

  • Экономичный: Автомасштабирование оптимизирует запросы в секунду (RU/s) и затраты, уменьшая их, когда не используется. Вы оплачиваете только те ресурсы, которые требуются вашим рабочим задачам на почасовой основе. Если вы в течение месяца используете Tmax на 66% или меньше часов, автомасштабирование может сократить расходы. Динамическое масштабирование также делает добавление дополнительного региона для обеспечения высокой доступности более экономичным, так как каждый регион и секции масштабируются независимо на основе использования. Дополнительные сведения см. в статье о выборе между стандартной (ручной) и автомасштабированием подготовленной пропускной способности .

  • Высокая доступность: Базы данных и контейнеры с автомасштабированием используют глобально распределенную отказоустойчивую серверную часть Azure Cosmos DB для обеспечения устойчивости и доступности данных.

Сценарии использования автомасштабирования

Варианты использования для автомасштабирования:

  • Переменные или непредсказуемые рабочие нагрузки. Если рабочие нагрузки предполагают переменные или непредсказуемые пиковые значения, автомасштабирование помогает сгладить пики за счет масштабирования по мере использования. Примеры включают розничные веб-сайты с сезонными шаблонами трафика, рабочими нагрузками Интернета вещей с пиками ежедневного использования и бизнес-приложениями с случайным пиком использования. Автомасштабирование устраняет необходимость вручную выделить пропускную способность для пиковой или средней емкости.

  • Новые приложения: Если вы разрабатываете новое приложение и не уверены в необходимой пропускной способности (ЕЗ/с), автомасштабирование упрощает начало работы. Можно начать с точки входа автомасштабирования в 100 – 1000 RU/s, отслеживать использование и определить оптимальное значение RU/s со временем.

  • Редко используемые приложения: Если у вас есть приложение, используемое только в течение нескольких часов в день, неделю или месяц, например приложение с низким объемом, веб-сайт или блог. Автомасштабирование настраивает емкость для обработки пиковых нагрузок и сокращает ее, когда они заканчиваются.

  • Разработка и тестирование рабочих нагрузок. Если вы или ваша команда используете базы данных и контейнеры Azure Cosmos DB в рабочее время, но не требует их в ночное время или в выходные дни, автомасштабирование помогает сэкономить затраты, уменьшая до минимума, если они не используются.

  • Запланированные производственные рабочие нагрузки/запросы. При наличии серии запланированных запросов или операций, которые необходимо выполнить во время простоя, можно легко сделать это с помощью автомасштабирования. При запуске рабочей нагрузки пропускная способность автоматически масштабируется до требуемого значения, а затем уменьшается.

Создание пользовательского решения для этих проблем требует значительного времени и добавляет сложность в конфигурацию или код приложения. Автомасштабирование позволяет выполнять указанные выше сценарии и устраняет необходимость в настраиваемом или ручном масштабировании емкости.

Варианты использования динамического масштабирования

Ниже описаны варианты использования динамического масштабирования.

  • Рабочие нагрузки базы данных с высоким трафиком в основном регионе и вторичным пассивным регионом для аварийного восстановления.
    • Благодаря динамическому масштабированию обеспечение высокой доступности с несколькими регионами является более экономичным. Вторичный регион независимо и автоматически сокращает масштабы во время простоя. Дополнительный регион также автоматически масштабируется по мере того, как он становится активным и при обработке трафика репликации записи из основного региона.
  • Многорегиональные рабочие нагрузки баз данных
    • Эти рабочие нагрузки часто испытывают неравномерное распределение запросов по регионам из-за естественного роста трафика и падения трафика в течение дня. Например, база данных активна в рабочие часы в глобальных распределенных часовых поясах.

Как работает автомасштабирование пропускной способности

При настройке контейнеров и баз данных с автомасштабированием указывается максимальная требуемая пропускная способность Tmax. Azure Cosmos DB масштабирует пропускную способность T таким образом 0.1*Tmax <= T <= Tmax. Например, если задана максимальная пропускная способность 20 000 ЕЗ/с, пропускная способность масштабируется в диапазоне от 2000 до 20 000 ЕЗ/с. Масштабирование выполняется автоматически и мгновенно, поэтому вы можете потреблять до предоставленной Tmax в любое время без задержки.

Плата взимается за каждый час за максимальную пропускную способность T системы в течение этого часа. При включении динамического масштабирования оно основывается на использовании RU/s в каждом физическом разделе и регионе. При независимом масштабировании каждого раздела и региона такая система выставления счетов может привести к экономии затрат для неоднородных рабочих нагрузок, так как ненужное увеличение масштабов избегается.

Точка входа для максимальной пропускной способности Tmax автомасштабирования — 1000 ЕЗ/с, масштабирование от 100 до 1000 ЕЗ/с. Можно задать Tmax с шагом в 1000 единиц запросов в секунду (RU/s) и в любое время изменить это значение.

Например, если в коллекции имеется 1000 ЕЗ/с и 2 секции, каждая секция может масштабироваться до 500 ЕЗ/с. За один час активности использование будет выглядеть следующим образом:

Регион Partition Throughput Использование Примечания
Напишите P1 <= 500 RU/с 100% 500 ЕЗ/с, из которых 50 ЕЗ/с используются для операций записи и 450 ЕЗ/с — для операций чтения.
Напишите P2 <= 200 руб./с 40% 200 ЕЗ/с, состоящие из всех операций чтения.
Читайте P1 <= 150 ЕЗ/с 30% 150 ЕЗ/с, из которых 50 ЕЗ/с используются для записи, реплицируемой из региона записи. 100 RU/с для операций чтения в этом регионе.
Читайте P2 <= 50 RU/с 10%

Без динамического масштабирования система масштабирует все секции равномерно на основе самой горячей секции. В этом примере, так как самый горячий раздел имел 100 % использования, все секции в регионах записи и чтения масштабируются до 1000 ЕЗ/с, что делает общее число единиц запросов в секунду до 2000 ЕЗ/с.

При динамическом масштабировании пропускная способность каждого раздела и региона масштабируется независимо, в результате чего общая пропускная способность составляет 900 RU/c, что лучше отражает фактический шаблон трафика и снижает затраты.

Включение автомасштабирования для существующих ресурсов

Используйте портал Azure, CLI или PowerShell , чтобы включить автомасштабирование в существующей базе данных или контейнере. Переключайтесь между автоматическим масштабированием и стандартной (ручной) выделенной пропускной способностью в любое время. Дополнительные сведения см. в этой документации.

Ограничения пропускной способности и хранилища при использовании автомасштабирования

Для любого значения Tmaxбаза данных или контейнера хранит общее число 0.1 * Tmax GB. После достижения этого объема хранилища максимальное значение RU/с автоматически увеличивается на основе нового значения хранилища, при этом это не влияет на работу вашего приложения.

Например, если начать с максимального значения 50 000 RU/s (масштабируется от 5000 до 50 000 RU/s), можно хранить до 5000 ГБ данных. Если хранилище превышает 5000 ГБ, например достигает 6000 ГБ, новое максимальное значение ЕЗ/с становится 60 000 ЕЗ/с (масштабируется от 6000 до 60 000 ЕЗ/с).

При использовании пропускной способности на уровне базы данных с автомасштабированием первые 25 контейнеров могут совместно использовать максимум 1000 RU/c (масштабируется от 100 до 1000 RU/c), при условии, что вы не превышаете 100 ГБ хранилища. Дополнительные сведения см. в этой документации.

Включение динамического масштабирования

Динамическое масштабирование включено по умолчанию для всех учетных записей Azure Cosmos DB, созданных после 25 сентября 2024 г. Клиенты, которые хотят включить эту функцию для более старых учетных записей, могут сделать это программным способом с помощью Azure PowerShell, CLI, REST API или из области функций портала Azure, как показано ниже.

  1. Перейдите к учетной записи Azure Cosmos DB на портале Azure.

  2. Выберите страницу "Компоненты ".

  3. Найдите и включите функцию динамического масштабирования (для каждого региона и автомасштабирования секций).

    Снимок экрана: функция **Динамическое масштабирование (для каждого региона и автомасштабирования секций)** на портале Azure.

    Important

    Эта функция включена на уровне учетной записи, поэтому все контейнеры с автомасштабированием и базы данных с общей пропускной способностью в учетной записи автоматически получают эту возможность. Включение этой функции не влияет на ресурсы в учетной записи, использующую пропускную способность вручную. Чтобы воспользоваться преимуществами динамического масштабирования, необходимо изменить ресурсы вручную на автомасштабирование. Включение этой функции имеет нулевое время простоя или эффект производительности. Эта функция не применима для бессерверных учетных записей. Эта функция поддерживается во всех облаках.

Мониторинг метрик

Для мониторинга автомасштабирования и динамического масштабирования можно использовать следующие метрики:

Имя метрики Definition Использование метрик
Подготовленная пропускная способность Отображает агрегированное максимальное число ЕЗ/с, приведённое к часовому интервалу, и отображает общее число ЕЗ/с, после масштабирования в течение часа. Вы можете использовать Provisioned Throughput метрику, чтобы увидеть, сколько RU/с взимается с вас за каждый час. При использовании автоматического масштабирования плата взимается на основе наиболее активного раздела за каждый час, и это правило распространяется на все разделы и регионы. С динамическим автомасштабированием вам выставляется счет за максимальные агрегированные RU/с, масштабированные в течение каждого часа на уровне каждого раздела и региона.
Нормализованное потребление RU Эта метрика представляет собой соотношение потребляемых единиц запросов в секунду к предоставленным единицам запросов в секунду на каждом уровне раздела и региона. Используйте эту метрику, чтобы определить, является ли максимальная пропускная способность автомасштабирования недостаточной или избыточной.

Если значение метрики стабильно равно 100%, а приложение испытывает ограничение скорости (код ошибки 429), возможно, потребуется больше запросов в секунду (RU/s). В отличие от этого, если значение этой метрики низкое и нет ограничения скорости, то может быть возможность для оптимизации и уменьшения единиц запроса в секунду (ЕЗ/с). Узнайте, как интерпретировать и устранять ошибки ограничения скорости код 429.

Normalized RU Consumption Метрика отражает RU/с, потребляемые в вторичном регионе из-за записи трафика репликации из основного региона, а также любого трафика чтения в этом регионе.
Автомасштабированный РУ Отображает динамически масштабируемую подготовленную пропускную способность на каждом уровне секции и региона только для учетных записей с поддержкой динамического автомасштабирования. Используйте эту метрику, чтобы узнать, как секции в каждом регионе масштабируются независимо от их использования.

Используйте метрики Azure MonitorAutoscaled RU чтобы проанализировать, как новое автоматическое масштабирование применяется по разделам и регионам. Отфильтруйте нужную учетную запись базы данных и контейнер, а затем отфильтруйте или разделите по метрике Physical PartitionID. Эта метрика отображает все разделы в их различных регионах.

Important

Мы рекомендуем использовать собственные возможности динамического масштабирования Azure Cosmos DB для управления емкостью. Однако при необходимости в Azure Monitor можно использовать метрику нормализованного потребления единиц запросов (RU) для принятия решений по программному масштабированию. Другие подходы, такие как использование вызова ReadThroughputAsync() в пакетах средств разработки программного обеспечения Azure Cosmos DB (SDK) для получения ProvisionedThroughput значения или использования ProvisionedThroughput метрик в Azure Monitor не рекомендуется и приводит к неточным результатам. Эти метрики представляют оплачиваемую пропускную способность с задержкой и не следует использовать для принятия решений по масштабированию.

Сравнение — контейнеры с ручной пропускной способностью против контейнеров с автомасштабируемой пропускной способностью

Дополнительные сведения см. в этой документации по выбору между стандартной (ручной) и автомасштабируемой пропускной способностью.

Контейнеры со стандартно (вручную) масштабируемой пропускной способностью Контейнеры с автомасштабируемой пропускной способностью
Подготовленная пропускная способность (единиц запросов в секунду) Настроено вручную. Масштабируемая автоматически и мгновенно на основе моделей использования рабочих нагрузок.
Ограничение скорости запросов и операций (429) Может произойти, если потребление превышает подготовленную емкость. Не произойдет, если вы используете RU/с в рамках диапазона пропускной способности, настроенного для автомасштабирования.
Планирование ресурсов Необходимо запланировать емкость и задать необходимую пропускную способность. Система автоматически обрабатывает планирование емкости и управление ими.
Цены Вы оплачиваете вручную предоставленные единицы запросов в секунду (ЕЗ/с) за час, используя стандартный тариф за оплату вручную предоставленных ЕЗ/с в час. Вы платите за самый высокий показатель RU/с, до которого система масштабировалась в течение часа.

Для учетных записей с одним регионом записи вы платите за число единиц запросов в секунду, потребляемых в час, используя функцию автомасштабирование числа единиц запросов в секунду за час.

За учетные записи с несколькими регионами записи не взимается дополнительная плата за автомасштабирование. Вы платите за использование пропускной способности почасово, используя одну и ту же ставку записи RU/s для нескольких регионов.

Оптимален для различных типов рабочих нагрузок Прогнозируемые, стабильные рабочие нагрузки Непредсказуемые, переменные рабочие нагрузки

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

Пользователи, которые хотят перенести много ресурсов из стандартной подготовленной пропускной способности в автомасштабирование, могут использовать скрипт Azure CLI для переноса всех ресурсов пропускной способности в подписке Azure на автомасштабирование.