Выделенная и платная по факту ёмкость
Выберите между выделенной пропускной способностью с автоматическим масштабированием и режимом оплаты по факту, учитывая предсказуемость трафика и стоимость.
«Выделенная и платная по факту ёмкость» — бесплатный урок Cloud & IT Cert Prep на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Cloud & IT Cert Prep, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Cloud & IT Cert Prep содержит 4 уроков всего.
Единицы пропускной способности DynamoDB
DynamoDB измеряет пропускную способность в Read Capacity Units (RCU) и Write Capacity Units (WCU). Одна RCU позволяет выполнить одно строго согласованное чтение в секунду (или два чтения с конечной согласованностью) для элементов размером до 4 KB. Одна WCU позволяет выполнить одну операцию записи в секунду для элементов размером до 1 KB.
Для элементов большего размера стоимость масштабируется пропорционально: запись элемента размером 10 KB стоит 10 WCU, а строго согласованное чтение элемента размером 10 KB — 3 RCU (ceil(10/4) = 3). Понимание единиц пропускной способности необходимо для оценки стоимости и диагностики ошибок ограничения пропускной способности ProvisionedThroughputExceededException.
Режим выделенной пропускной способности
В режиме Provisioned Capacity Вы указываете точное количество RCU и WCU, которое должна поддерживать Ваша таблица. DynamoDB резервирует эту пропускную способность и взимает плату независимо от того, используете Вы её или нет. Если приложение превышает выделенную пропускную способность, запросы ограничиваются и возвращают ProvisionedThroughputExceededException.
Режим Provisioned идеально подходит для рабочих нагрузок с предсказуемым и стабильным трафиком. Стоимость единицы ниже, чем в режиме On-Demand, а дополнительно снизить расходы можно, приобретя зарезервированную пропускную способность DynamoDB (обязательства на 1 или 3 года со скидкой до 76%).
# Create a table with provisioned capacity
aws dynamodb create-table \
--table-name Products \
--attribute-definitions AttributeName=ProductId,AttributeType=S \
--key-schema AttributeName=ProductId,KeyType=HASH \
--provisioned-throughput ReadCapacityUnits=100,WriteCapacityUnits=50Режим пропускной способности по мере использования
В режиме On-Demand DynamoDB автоматически масштабируется для обработки любого уровня трафика без предварительного планирования пропускной способности. Вы платите за фактически использованные запросы: за каждую RRU (единицу запроса на чтение) и WRU (единицу запроса на запись). Вам не нужно управлять выделенной пропускной способностью, и ограничения из-за заданных лимитов отсутствуют.
Режим On-Demand идеально подходит для непредсказуемых рабочих нагрузок или резких всплесков трафика, новых таблиц с неизвестным трафиком и сред разработки/тестирования с редким доступом. Стоимость запроса выше, чем в режиме Provisioned, поэтому для стабильных рабочих нагрузок с высокой пропускной способностью режим Provisioned экономичнее.
# Create a table in on-demand mode
aws dynamodb create-table \
--table-name Events \
--attribute-definitions AttributeName=EventId,AttributeType=S \
--key-schema AttributeName=EventId,KeyType=HASH \
--billing-mode PAY_PER_REQUESTПереключение между режимами пропускной способности
Вы можете в любое время переключить таблицу между режимами Provisioned и On-Demand с помощью консоли или CLI. Однако переключать режим можно только один раз в 24 часа. После перехода в режим On-Demand таблица сохраняет предыдущую пиковую выделенную пропускную способность как начальный уровень пропускной способности, что защищает от немедленного ограничения запросов, если трафик уже высок.
Распространённая стратегия заключается в использовании On-Demand на начальном этапе запуска, когда характер трафика неизвестен, с последующим переходом на Provisioned с автоматическим масштабированием, когда трафик становится предсказуемым. Это позволяет снизить расходы.
# Switch a table to on-demand billing mode
aws dynamodb update-table \
--table-name Products \
--billing-mode PAY_PER_REQUESTАвтоматическое масштабирование DynamoDB для режима Provisioned
Автоматическое масштабирование DynamoDB автоматически корректирует выделенные RCU и WCU в соответствии с фактическим трафиком. Вы задаёте целевой процент использования (например, 70%) и диапазон минимальной и максимальной пропускной способности. Политика Application Auto Scaling отслеживает потребляемую пропускную способность таблицы и корректирует выделенную пропускную способность, чтобы поддерживать целевой уровень использования.
Автоматическое масштабирование реагирует на устойчивые изменения трафика, и его увеличение может занять несколько минут. Оно плохо справляется с внезапными всплесками трафика: в таких случаях заранее увеличьте пропускную способность вручную или используйте режим On-Demand.
# Register table as an auto scaling target
aws application-autoscaling register-scalable-target \
--service-namespace dynamodb \
--resource-id 'table/Products' \
--scalable-dimension dynamodb:table:ReadCapacityUnits \
--min-capacity 10 \
--max-capacity 1000Резервная пропускная способность
DynamoDB сохраняет до 5 минут неиспользованной выделенной пропускной способности в виде резервной пропускной способности. Если трафик таблицы ненадолго превышает выделенный уровень, DynamoDB использует резервный запас для обработки дополнительных запросов без их ограничения. После исчерпания резервного запаса последующие избыточные запросы ограничиваются.
Резервная пропускная способность — это краткосрочный буфер, а не замена правильному планированию пропускной способности. Отслеживайте показатели CloudWatch ConsumedReadCapacityUnits и ConsumedWriteCapacityUnits, чтобы определить, когда рабочая нагрузка постоянно использует резервную пропускную способность, и соответствующим образом скорректировать выделенную пропускную способность.
Ограничение запросов и обработка ошибок
Когда выделенная пропускная способность исчерпана (и резервный запас закончился), DynamoDB возвращает ProvisionedThroughputExceededException. Пакеты AWS SDK содержат встроенную логику повторных попыток с экспоненциальной задержкой и случайным разбросом, которая автоматически повторяет ограниченные запросы.
Для диагностики ограничений проверьте показатели CloudWatch SystemErrors и ThrottledRequests. Если запросы с определёнными ключами раздела ограничиваются при низком общем использовании таблицы, проблема связана с горячим разделом: переработайте ключ раздела, добавьте ключ сортировки или используйте распределение операций записи.
Оценка требований к пропускной способности
Чтобы оценить пропускную способность для режима Provisioned:
- Вычислите пиковое количество операций записи в секунду × средний размер элемента / 1 KB (с округлением вверх) = необходимое количество WCU
- Вычислите пиковое количество операций чтения в секунду × средний размер элемента / 4 KB (с округлением вверх) = необходимое количество RCU (для строго согласованных чтений); для чтений с конечной согласованностью разделите результат пополам
- Добавьте запас 20–30% сверх пикового значения, чтобы компенсировать всплески до исчерпания резервной пропускной способности
Пример: 1 000 операций записи в секунду для элементов размером 2 KB = 2 000 WCU. 5 000 операций чтения в секунду для элементов размером 8 KB (с конечной согласованностью) = ceil(8/4) × 5 000 / 2 = 5 000 RCU.
Зарезервированная пропускная способность для снижения расходов
Зарезервированная пропускная способность DynamoDB позволяет приобрести фиксированное количество RCU и WCU на срок 1 или 3 года, заплатив заранее и получив значительную скидку (до 76%) по сравнению с тарифами On-Demand. Зарезервированная пропускная способность распространяется на все таблицы в режиме Provisioned в одном регионе и автоматически учитывается в почасовой оплате.
Зарезервированная пропускная способность применяется только к режиму Provisioned — использовать её с режимом On-Demand нельзя. Это лучший способ сэкономить для стабильных и предсказуемых рабочих нагрузок, объём которых можно уверенно спрогнозировать на 1–3 года.
Сравнение режимов: руководство по выбору на экзамене
Используйте это руководство при ответах на вопросы SAA-C03 о режимах пропускной способности:
- On-Demand: непредсказуемый трафик, новое приложение, редкий доступ, переменная рабочая нагрузка со всплесками, отсутствие необходимости управлять пропускной способностью
- Provisioned: стабильный и предсказуемый трафик, чувствительность к стоимости, готовность управлять пропускной способностью, возможность получить скидки на зарезервированную пропускную способность
- Provisioned + Auto Scaling: предсказуемый базовый уровень с некоторыми колебаниями, необходимость автоматической корректировки без ручных изменений
На экзамене такие ключевые слова, как «резкие всплески», «непредсказуемый» или «минимальные операционные затраты», указывают на On-Demand; «стабильный трафик» или «оптимизация стоимости» указывают на Provisioned.
Адаптивная пропускная способность
Адаптивная пропускная способность DynamoDB автоматически перераспределяет пропускную способность от неактивных разделов к активным в реальном времени. Если один ключ раздела получает больше трафика, чем выделенная ему доля, адаптивная пропускная способность заимствует пропускную способность у недостаточно используемых разделов, чтобы обслужить активный раздел, — при условии, что общая пропускная способность таблицы не превышена.
Адаптивная пропускная способность всегда включена и не требует настройки. Она уменьшает количество ограничений в горячих разделах при умеренно неравномерных шаблонах доступа. Для рабочих нагрузок с сильным перекосом (например, когда один ключ раздела получает 90% трафика) адаптивной пропускной способности недостаточно: необходимо переработать ключ раздела или использовать распределение операций записи.
Быстрая проверка
Проверьте своё понимание концепций AWS Solutions Architect (SAA-C03) из этого урока.
Итоги урока
В этом уроке Вы узнали, что режим Provisioned задаёт фиксированные RCU/WCU для предсказуемых рабочих нагрузок по более низкой стоимости, режим On-Demand масштабируется автоматически для непредсказуемого трафика при более высокой цене запроса, а автоматическое масштабирование корректирует выделенную пропускную способность на основе целевых процентов использования. Далее мы рассмотрим Global Secondary Indexes и Local Secondary Indexes для альтернативных шаблонов запросов.
Часто задаваемые вопросы
Урок «Выделенная и платная по факту ёмкость» бесплатный?
Да — полный текст урока «Выделенная и платная по факту ёмкость» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Cloud & IT Cert Prep, подпишись на CoddyKit PRO. Курс Cloud & IT Cert Prep содержит 4 уроков всего.
Чему я научусь в уроке «Выделенная и платная по факту ёмкость»?
Выберите между выделенной пропускной способностью с автоматическим масштабированием и режимом оплаты по факту, учитывая предсказуемость трафика и стоимость. Ты практикуешь Cloud & IT Cert Prep с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Cloud & IT Cert Prep?
Предыдущий опыт не требуется. Cloud & IT Cert Prep на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.
Сколько времени занимает урок «Выделенная и платная по факту ёмкость»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Cloud & IT Cert Prep?
Да. Каждый урок Cloud & IT Cert Prep включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Таблицы, элементы и первичные ключи
- Выделенная и платная по факту ёмкость
- Глобальные и локальные вторичные индексы
- Потоки DynamoDB и глобальные таблицы