Подтвердить что ты не робот

Как рассчитана и ограничена пропускная способность Amazon DynamoDB?

Является ли оно усредненным в секунду? В минуту? В час?

Например, если я заплачу за 10 "считываемых единиц", что позволяет 10 высокоуровневых чтений в секунду, я буду задушен, если попытаюсь сделать 20 чтений за одну секунду, даже если бы это были только 20 прочитанных что произошло в последний час? Документация Amazon и часто задаваемые вопросы не отвечают на этот критический вопрос где бы я ни находилась.

Единственный связанный ответ, который я мог найти в FAQ, полностью игнорирует вопрос о том, как вычисляется использование и когда может произойти дросселирование:

В: Что произойдет, если мое приложение выполнит больше операций чтения или записи, чем моя резервная емкость?

A: Если ваше приложение выполняет больше чтение/секунда или запись/вторая, чем ваши таблицы, обеспечиваемые пропускной способностью мощности, запросы, превышающие ваши резервные мощности, будут дросселируется, и вы получите 400 кодов ошибок. Например, если вы попросил 1000 единиц мощности записи и попытался сделать 1500 пишет/в секунду из 1 KB элементов, DynamoDB разрешает только 1000 пишет/секунду, чтобы пройти, и вы получите код ошибки 400 на ваши дополнительные запросы. Вы должны использовать CloudWatch для отслеживания вашего запроса чтобы вы всегда имели достаточную обеспеченную пропускную способность для достигните требуемой скорости запроса.

4b9b3361

Ответ 1

DynamoDB обеспечивает "Burst Capacity", который позволяет получать всплески в количестве данных, считываемых из таблицы. Вы можете прочитать об этом ниже: http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GuidelinesForTables.html#GuidelinesForTables.Bursting

В основном это то, что заметил @abjennings - он использует окно 5min для среднего числа чтений из таблицы.

Ответ 2

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

Я провел некоторое тестирование. Я создал тестовую таблицу с пропускной способностью 1 запись в секунду. Если я не напишу на него какое-то время, а затем отправлю поток запросов, Amazon, похоже, примет около 300, прежде чем начнет дросселирование.

Предостережение, конечно, состоит в том, что это не указано ни в одной официальной документации Amazon и может меняться в любое время.

Ответ 3

Если я заплачу за 10 "единиц чтения", что позволяет 10 очень непротиворечивых читается в секунду, меня задушу, если я попытаюсь сделать 20 прочтений в одна секунда, даже если это были только 20 прочитанных, которые произошли в последний час?

Да, это связано с тем, что сама концепция Amazon DynamoDB является быстрой и предсказуемой производительностью с плавной масштабируемостью - цитируемые часто задаваемые вопросы фактически исправляют это правильно уже (т.е. вы должны брать операции/второй буквально), хотя расчет лучше всего проиллюстрирован в Продвинутой пропускной способности в Amazon DynamoDB:

Единица емкости записи позволяет выполнять одну запись в секунду для элементов размером до 1 КБ. Аналогично, единица Read Capacityпозволяет выполнять одно строго согласованное чтение в секунду (или два в итоге последовательные чтения в секунду) элементов размером до 1 КБ.Большие предметы потребуют большей емкости. Вы можете рассчитать число единиц мощности чтения и записи, которые вам нужны, оценивая количество чтений или записей, которые вы должны выполнять в секунду, и умножения на размер ваших предметов (округленный до ближайшего КБ).

Единицы емкости, необходимые для записи = Количество записей элементов за каждый второй размер элемента x (округленный до ближайшего КБ)

Единицы мощности требуется для чтения * = Количество элементов в секунду, размер элемента (округляется до ближайшего КБ) * Если вы используете в конечном итоге последовательные чтения, вы получите вдвое большую пропускную способность с точки зрения чтения в секунду.

[акцент мой]

Получение этих вычислений для реальных случаев использования в мире потенциально сложно, однако, пожалуйста, проверьте дополнительные подробности, например, например. Руководства по обеспечению пропускной способности в Amazon DynamoDB соответственно.

Ответ 4

От AWS:

В настоящее время DynamoDB сохраняет до пяти минут (300 секунд) неиспользуемой емкости чтения и записи

DynamoDB обеспечивает некоторую гибкость в обеспечении пропускной способности каждого раздела. Когда вы не полностью используете пропускную способность раздела, DynamoDB сохраняет часть вашей неиспользуемой емкости для более поздних всплесков использования пропускной способности. В настоящее время DynamoDB сохраняет до пяти минут (300 секунд) неиспользуемых возможностей чтения и записи. Во время случайного всплеска активности чтения или записи эти дополнительные единицы мощности могут потребляться очень быстро - даже быстрее, чем предусмотренная пропускная способность в секунду для вашей таблицы. Однако не разрабатывайте приложение так, чтобы оно зависело от доступности пакетов в любое время: DynamoDB может и может использовать пакетную емкость для обслуживания фона и других задач без предварительного уведомления.

Ответ 5

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

Ответ 6

Мы устанавливаем для write-limit '10 units/sec для одной из таблиц. График Cloudwatch (см. Изображение) показывает, что мы превысили это на единицу (11 writes/sec). Я предполагаю там небольшую комнату для маневра (<= 10%). Опять же, я просто предполагаю...