Лямбда-триггер запаздывает через потоки DynamoDB - PullRequest
0 голосов
/ 27 июня 2019

Предположение:

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

Контекст:

Потокивключен в таблице DynamoDB, и это будет запускать лямбда.Лямбда читает потоковую запись и индексирует запись в упругом поиске.

Постановка задачи:

Существует задержка между временем вставки записи в DynamoDB иВремя лямбда сработало через потоковую запись.Эта задержка или задержка продолжали увеличиваться и прямо пропорциональны объему данных, вставляемых в DynamoDB.

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

Я не мог понять, в чем проблема, потому что я даже не мог увидеть, содержат ли в данный момент записи записи ИЛИзаписи в потоках уже доставлены, но лямбда-триггер - это задержка?

Пример задержки: мы сделали огромные записи вчера, и мы видим, что эти записи бьют по лямбде сегодня!невероятная задержка!:)

Есть предложения, пожалуйста?

1 Ответ

0 голосов
/ 27 июня 2019

С Лямбда-документация

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

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

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

Вот несколько вещей, которые вы можете сделать

  1. Убедитесь, что при приеме данных в DynamodB вы используете случайный PK вместо некоторого упорядоченного PK, так что вероятность попадания в другой шард увеличивается.
  2. Убедитесь, что вы повторно используете соединение с Elastic Search при приеме данных.
  3. Увеличьте размер пакета, чтобы одна и та же лямбда-функция могла принимать несколько записей. см. Размер партии здесь
  4. Используйте язык сценариев вместо java для уменьшения проблем холодного запуска.
  5. Посмотрите, есть ли другие лямбды, которые работают, и вы достигаете максимального одновременного предела лямбды (это очень маловероятно).
...