Обрабатывает ли AWS Lambda события DynamoDB строго по порядку? - PullRequest
0 голосов
/ 24 апреля 2018

Я нахожусь в процессе написания лямбда-функции, которая обрабатывает элементы из потока DynamoDB.

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

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

Для потоковых источников событий (потоков данных Amazon Kinesis и DynamoDB) AWS Lambda опрашивает ваш поток и вызывает вашу функцию Lambda. Таким образом, в случае сбоя лямбда-функции AWS Lambda пытается обработать ошибочный пакет записей до истечения срока действия данных, который может составлять до семи дней для потоков данных Amazon Kinesis. Исключение рассматривается как блокировка, и AWS Lambda не будет считывать какие-либо новые записи из потока до тех пор, пока не истечет или не будет успешно обработан неудачный пакет записей. Это гарантирует, что AWS Lambda обрабатывает события потока по порядку.

Означает ли "AWS Lambda обрабатывать события потока по порядку", что Lambda не может обрабатывать несколько событий одновременно? Есть ли способ одновременно обрабатывать события из разных ключей?

1 Ответ

0 голосов
/ 24 апреля 2018

Потоковые записи организованы в группы или сегменты.

Согласно документации Lambda , параллелизм достигается на уровне шарда. Внутри каждого сегмента события потока обрабатываются по порядку.

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

А согласно Пределы в DynamoDB ,

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

...