Как управлять огромным количеством записей с помощью лямбды - PullRequest
0 голосов
/ 26 апреля 2020

У меня есть 20 тысяч записей в Excel на S3. Мой дизайн выглядит ниже для обработки этих записей. SQSWriterLambda -> SQS -> SQSReaderLambda -> Сервер. SQSWriterLambda будет читать файл Excel и отправлять сообщения в SQS, по 1 сообщению на каждую запись в Excel, поэтому будет 20 тыс. Кв. SQSReaderLambda запускается на основании сообщений, полученных в SQS. Он отправит содержимое сообщения на конечный сервер для обработки. Но мой сервер может обрабатывать только 5 тысяч сообщений за 24 часа. Поэтому я ищу решение для обработки оставшихся 15 тыс. Записей. Я собираюсь поместить лист Excel один раз на S3, и я хочу, чтобы лямбда-обработчик обрабатывал записи (5k в сутки) в течение любого количества дней.

Максимальное значение времени ожидания видимости составляет 12 часов. Моя 1-я лямбда может поместить 20к сообщений на кв. Но 2-я лямбда потерпит неудачу после обработки 5 тыс. Записей.

1 Ответ

0 голосов
/ 26 апреля 2020

Если вы подключили лямбду к sqs, она попытается отправить все 20К-сообщения второй лямбде для обработки. Я думаю, что разделение SQS со второй лямбда должно работать.

Можно рассмотреть следующий подход:

  1. Заменить вторую лямбда-функцию на "свободную" (не подключенную к SQS). Вместо этого вторая функция сама будет запрашивать SQS итеративным образом. Он просто запросит 5K сообщений от него.

  2. Настройте правило CloudWatch Events, чтобы автоматически запускать вашу функцию один раз в день. Таким образом, вы будете обрабатывать 5 тыс. Сообщений в день.

Обратите внимание, что по умолчанию срок хранения сообщений в SQS составляет 4 дня, чего достаточно для 20 КБ сообщений (5 К x 4 дня). Но при необходимости вы можете увеличить его до 14 дней.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...