Обработка запросов дроссельной записи AWS DynamoDB - PullRequest
0 голосов
/ 06 марта 2019

У меня есть таблица, в которой заданный запрос записи задушен. Я хочу больше узнать о том, как с ними справляется AWS-SDK.

Насколько я понимаю, DynamoDB вернет ошибку в мой Lambda. Вот почему у меня будут пользовательские ошибки в таблице показателей DynamoDB. Однако AWS-SDK имеет стратегию обработки ошибок и повторных попыток, которая помогает мне повторять и записывать обработанные запросы обратно в таблицу. Это правильно?

Ответы [ 2 ]

2 голосов
/ 06 марта 2019

Каждый раз, когда ваше приложение отправляет запрос, превышающий ваши возможности, вы получаете сообщение ProvisionedThroughputExceededException от «Динамо».Однако ваш SDK обрабатывает это для вас и повторяет попытку.По умолчанию время повторения динамомашины начинается с 50 мс, количество повторов по умолчанию равно 10, а откат по умолчанию экспоненциальный.

Это означает, что вы получаете повторы при:

  1. 50 мс
  2. 100 мс
  3. 200 мс
  4. 400 мс
  5. 800 мс
  6. 1,6 с
  7. 3,2 с
  8. 6,4 с
  9. 12,8 с
  10. 25,6 с

Если после 10-й повторной попытки ваш запрос все еще не выполнен, SDK передает ProvisionedThroughputExceededException обратно в ваше приложение, и вы можетеобрабатывайте его так, как вам нравится.

Обратите внимание, что вы можете изменить поведение по умолчанию для вашего SDK.Например,

new AWS.DynamoDB({maxRetries: 13, retryDelayOptions: {base: 200}});

Это означает, что вы повторите попытку 13 раз с начальной задержкой 200 мс.Это даст вашему запросу в общей сложности 819,2 с, а не 25,6 с.

0 голосов
/ 06 марта 2019

Если в вашу таблицу DynamoDB поступает много запросов на запись, а выделенная емкость записи меньше, то запросы на их запись DynamoDB душат ваш запрос.

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

Решением для этого является использование DynamoDB Режим по требованию .

...