Поделиться через


Как сделать выбор между стандартной (ручной) и автомасштабируемой подготовленной пропускной способностью

Область применения: NoSQL Mongodb Кассандра Гремлин Таблица

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

Эта статья рассказывает о том, как сделать правильный выбор между стандартной (ручной) и автомасштабируемой подготовленной пропускной способностью для рабочей нагрузки.

Общие сведения о подготовленных типах пропускной способности

Прежде чем коснуться различий между стандартным (ручным) и автомасштабируемым типами, важно сначала понять, как работает выделенная пропускная способность в Azure Cosmos DB.

При использовании подготовленной пропускной способности вы задаете пропускную способность, измеряемую в единицах запросов в секунду (ЕЗ/с), необходимых для вашей рабочей нагрузки. Служба обеспечивает вместимость, необходимую для удовлетворения требований к пропускной способности. Операции базы данных для службы, например операции чтения, записи и запросы, потребляют некоторый объем единиц запросов (ЕЗ). Дополнительные сведения о единицах запроса.

В следующей таблице показано общее сравнение стандартного (ручного) и автомасштабируемого типов пропускной способности.

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

Например, если задать значение 400 ЕЗ/с для стандартной (ручной) пропускной способности, она будет постоянно находиться на указанном уровне.
Вы указываете наибольшее или максимальное количество ЕЗ/с Tmax, которое система не должна превышать. Система автоматически масштабирует пропускную способность T, чтобы соответствовать 0.1* Tmax <= T <= Tmax.

Например, если задать максимальное значение для автомасштабирования, равное 4 000 ЕЗ/с, система будет масштабироваться в пределах от 400 до 4 000 ЕЗ/с.
Сценарии использования Вы хотите вручную управлять емкостью пропускной способности (RU/с) и масштабировать её самостоятельно.

У вас высокая и стабильная нагрузка на выделенные единицы запросов в секунду (RU/s). Если вы установили подготовленное значение единиц запросов в секунду T и использовали 66 % от запланированных часов в месяц и более, по расчетам, вы сэкономите благодаря стандартному (ручному) значению подготовленных ЕЗ/с.

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

Число используемых единиц запросов в секунду у вас меняется, или его сложно прогнозировать. Если для автомасштабирования вы установили максимальное значение единиц запросов в секунду Tmax и использовали все это количество (Tmax) для 66 % от запланированных часов в месяц и менее, по расчетам, вы сэкономите благодаря автомасштабированию.

Это основано на сравнении значения параметра Tmax при автомасштабировании и того же количества T при использовании стандартного (ручного) типа.
Модель выставления счетов Выставление счетов выполняется по часам для подготовленных РУ, независимо от того, сколько РУ было использовано.

Пример:
  • Подготовлено 400 ЕЗ/с
  • Час 1: нет запросов
  • Час 2: 400 единиц запросов в секунду


  • В течение обоих часов 1 и 2 с вас будет взиматься плата в размере 400 рублей в секунду по тарифам обычной (ручной) расчета.
    Выставление счетов осуществляется на почасовой основе по максимальному количеству RU/сек, до которого система масштабировалась в течение часа.

    Пример:
  • Подготовленная максимальная пропускная способность для автомасштабирования: 4 000 ЕЗ/с (с масштабированием от 400 до 4 000 ЕЗ/с)
  • Час 1: система увеличила пропускную способность до максимального значения в 3 500 RU/с
  • Час 2: система уменьшила пропускную способность до минимального значения в 400 ЕЗ/с (всегда 10 % от Tmax) из-за отсутствия использования


  • Вам будет выставлен счёт на 3 500 ЕЗ/с за час 1 и 400 ЕЗ/с за час 2 согласно тарифам на автомасштабирование подготовленной пропускной способности. Тариф на автомасштабирование за RU/s составляет 1,5 * тариф на стандартный (ручной) тип масштабирования пропускной способности.
    Что происходит при превышении зарезервированных RU/s Значение RU/s остается неизменным на уровне выделенной мощности. Все запросы, которые превышают подготовленное значение запросов в секунду, будут ограничены в скорости и получат отклик с рекомендацией подождать, прежде чем совершить повторную попытку. При необходимости можно вручную увеличить или уменьшить запросы в секунду (RU/s). При автомасштабировании система будет увеличивать количество единиц запросов в секунду до максимального числа ЕЗ/с. Все запросы, потребляемые свыше максимального значения единиц запросов в секунду для автомасштабирования, будут ограничены по скорости и получат отклик с рекомендацией подождать, прежде чем совершить повторную попытку.

    Разберитесь в своих шаблонах трафика

    Новые приложения

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

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

    Если вы подготовите значение в 400 единиц запросов в секунду для точки входа при стандартном (ручном) масштабировании, то не сможете потреблять больше указанного значения, пока не измените пропускную способность вручную. Вам будет выставлен счет за скорость 400 ЕЗ/с на стандартной (ручной) подготовленной скорости пропускной способности, за каждый час.

    Если вы настроите автоматическое масштабирование пропускной способности с максимальным значением 4000 ЕЗ/с, ресурс будет масштабироваться в диапазоне от 400 до 4000 ЕЗ/с. Так как ставка оплаты за пропускную способность при автомасштабировании в 1,5 раза выше, чем при стандартном (ручном) масштабировании, ваш счет за часы, когда система уменьшает пропускную способность до минимального уровня 400 ЕЗ/с, будет выше, чем при ручной настройке на 400 ЕЗ/с. Однако при использовании автомасштабирования, если трафик вашего приложения резко увеличивается, вы сможете потребить до 4000 единиц запросов в секунду, без необходимости действий со стороны пользователя. В общем, следует сопоставить преимущества возможности потреблять максимальное количество единиц RU в секунду в любое время с увеличенной в 1,5 раза ставкой автоматического масштабирования.

    Чтобы оценить требования к пропускной способности, используйте калькулятор емкости Azure Cosmos DB.

    Существующие приложения

    Если у вас есть приложение, использующее стандартное (ручное) масштабирование подготовленной пропускной способности, можно использовать метрики Azure Monitor, чтобы определить, подходит ли шаблон трафика для автомасштабирования.

    Сначала найдите метрику нормализованного потребления единиц запросов для базы данных или контейнера.

    Затем определите, как нормализованное использование меняется с течением времени. Определите максимальное нормализованное использование для каждого часа. Затем рассчитайте среднее нормализованное использование по всем часам. Если вы видите, что среднее использование составляет меньше 66 %, попробуйте включить автомасштабирование для базы данных или контейнера. Напротив, если среднее использование превышает 66%, рекомендуется оставаться на стандартной (вручную настроенной) подготовленной пропускной способности.

    Совет

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

    Примеры

    Рассмотрим два разных примера рабочих нагрузок и проанализируем, подходят ли они для ручного или автоматического масштабирования пропускной способности. Чтобы проиллюстрировать общий подход, мы проанализируем три часа истории и определим разницу в затратах между ручным и автомасштабированием. Для рабочих нагрузок рекомендуется использовать историю от 7 до 30 дней (или дольше, если доступно) для определения закономерностей в использовании единиц запросов в секунду (RU/s).

    Примечание.

    Все примеры, показанные в этом документе, основаны на цене учетной записи Azure Cosmos DB, развернутой в неправительственных регионах США. Цены и расчеты могут быть иными в зависимости от вашего региона. Актуальные сведения о ценах см. на странице цен Azure Cosmos DB.

    Предположения.

    • Предположим, у нас есть ручная пропускная способность в 30 000 единиц запросов в секунду (ЕЗ/с).
    • У нас настроена запись в одном регионе с одним регионом. Если бы у нас было несколько регионов, то почасовую стоимость следовало бы умножить на их количество.
    • Используйте общедоступные тарифы для ручного ($0,008 США за 100 RU/s в час) и автоматического ($0,012 США за 100 RU/s в час) увеличения пропускной способности в учетных записях с записью в одном регионе. Дополнительные сведения см. на странице цен.

    Во-первых, рассмотрим нормализованное потребление РФ. У этой рабочей нагрузки переменный трафик с нормализованным потреблением РУ в диапазоне от 6 % до 100 %. Возможны случайные всплески до 100 %, которые трудно прогнозировать, но при этом — много часов с низким уровнем использования.

    Рабочая нагрузка с переменным трафиком — нормализованное потребление RU в диапазоне от 6 % до 100 % в течение всех часов

    Сравним затраты на настройку вручную пропускной способности в 30 000 ЕЗ/с с установкой максимального значения автомасштабирования до 30 000 ЕЗ/с (масштабирование в диапазоне от 3000 до 30 000 ЕЗ/с).

    Теперь проанализируем историю. Предположим, что представленное использование описано в следующей таблице. Средний уровень использования по трем часам составляет 39 %. Поскольку в среднем нормализованное потребление ЕЗ составляет менее 66%, мы экономим за счет автомасштабирования.

    Обратите внимание, что для часа 1 при уровне использования 6 % за автомасштабирование будет выставлен счет за 10 % от максимального числа ЕЗ в секунду, что является минимальным значением в час. Хотя стоимость автомасштабирования в определенные часы может быть выше, чем при ручном регулировании пропускной способности, при среднем уровне использования ниже 66 % в течение всех часов автоматическое масштабирование окажется дешевле.

    Период времени Загруженность Оплата за автомасштабирование запросов в секунду (RU/s) Вариант 1: ручной режим, 30 000 ЕЗ/с Вариант 2: автомасштабирование в диапазоне 3000–30 000 ЕЗ/s
    Час 1 %6 3000 30 000 * 0,008 / 100 = 2,40 долл. 3000 * 0,012 / 100 = 0,36 долл.
    Час 2 100% 30,000 30 000 * 0,008 / 100 = 2,40 долл. 30 000 * 0,012 / 100 = 3,60 долл.
    Час 3 11% 3300 30 000 * 0,008 / 100 = 2,40 долл. 3300 * 0,012 / 100 = 0,40 долл.
    Всего 7,20 долл. 4,36 (экономия 39 %)

    Эта нагрузка имеет стабильный трафик, с нормализованным потреблением RU в диапазоне от 72% до 100%. В случае подготовки 30 000 RU/с это означает, что мы потребляем от 21 600 до 30 000 RU/с.

    Рабочая нагрузка со стабильным трафиком — нормализованное потребление RU в диапазоне от 72 % до 100 % в течение всех часов.

    Сравним затраты на настройку вручную пропускной способности в 30 000 ЕЗ/с с установкой максимального значения автомасштабирования до 30 000 ЕЗ/с (масштабирование в диапазоне от 3000 до 30 000 ЕЗ/с).

    Предположим, что наша история использования описана в таблице ниже. Средний уровень использования по трем часам составляет 88 %. Поскольку нормализованное потребление ЕЗ в среднем выше 66 %, мы экономим, используя ручную пропускную способность.

    В целом, если среднее использование за все 730 часов в течение месяца превышает 66 %, то мы будем экономить при ручном регулировании пропускной способности.

    Период времени Загруженность Оплата за автомасштабирование запросов в секунду (RU/s) Вариант 1: ручной режим, 30 000 ЕЗ/с Вариант 2: автомасштабирование в диапазоне 3000–30 000 ЕЗ/s
    Час 1 72 % 21 600 30 000 * 0,008 / 100 = 2,40 долл. 21 600 * 0,012 / 100 = 2,59 долл.
    Час 2 93 % 28 000 30 000 * 0,008 / 100 = 2,40 долл. 28 000 * 0,012 / 100 = 3,36 долл.
    Час 3 100% 30,000 30 000 * 0,008 / 100 = 2,40 долл. 30 000 * 0,012 / 100 = 3,60 долл.
    Всего 7,20 долл. 9,55 долл.

    Совет

    Для стандартной (ручной) пропускной способности вы можете использовать метрику нормализованного использования, чтобы оценить фактические RU/с, которые вы сможете использовать при переходе на автомасштабируемость. Умножьте нормализованное использование в определенный момент времени на текущее значение стандартных (ручных) единиц запросов в секунду (RU/s). Например, если вы выделили 5 000 ЕЗ/с и нормализованное использование составляет 90 %, то потребление составляет 0,9 * 5 000 = 4 500 ЕЗ/с. Если вы видите, что шаблон трафика меняется, но вы указали слишком большое или слишком маленькое значение, вы можете включить автомасштабирование, а затем соответствующим образом изменить параметр максимального числа единиц запросов в секунду.

    Расчет среднего уровня использования

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

    Чтобы вычислить среднее значение от максимального уровня использования в течение всех часов:

    1. Установите Агрегирование для метрики нормализованного потребления RU на значение Max (максимум).
    2. Для параметра Степень детализации времени установите значение 1 час.
    3. Перейдите к параметрам диаграммы.
    4. Выберите линейчатую диаграмму.
    5. В разделе Общий доступ выберите Скачать в Excel. В полученной электронной таблице рассчитайте средний уровень использования для всех часов.

    Чтобы определить нормализованное потребление RU по часам, 1) выберите гранулярность времени в 1 час; 2) откройте параметры диаграммы для редактирования; 3) выберите гистограмму; 4) в разделе «Общий доступ» выберите «Скачать в Excel», чтобы рассчитать среднее значение по всем часам.

    Измерение и отслеживание использования

    Спустя некоторое время после выбора типа масштабирования пропускной способности следует понаблюдать за приложением и внести необходимые изменения.

    Если вы применяете автомасштабирование, используйте Azure Monitor, чтобы просмотреть значения подготовленного максимального количества единиц запросов в секунду (максимальная пропускная способность при автомасштабировании) и числа единиц запросов в секунду, которое в настоящий момент использует система (подготовленная пропускная способность).

    В следующем примере показана переменная или непредсказуемая рабочая нагрузка с помощью автомасштабирования. Обратите внимание, что если нет трафика, система масштабирует ЕЗ/с до минимума 10 % от максимального ЕЗ/с, что в этом случае составляет 5000 ЕЗ/с и 50 000 ЕЗ/с соответственно.

    Снимок экрана: пример рабочей нагрузки с автомасштабированием с максимальной скоростью автомасштабирования в 50 000 ЕЗ/с и пропускной способностью от 50000 до 50 000 ЕЗ/с.

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

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

    Следующие шаги