Одна AWS лямбда с большей ответственностью по сравнению с несколькими лямбда с меньшей ответственностью - PullRequest
0 голосов
/ 15 февраля 2019

В настоящее время я работаю над компонентом индексирования, где он создает индексы в разных таблицах базы данных (DynamoDB, ElasticSearch и т. Д.) На основе клиентских конфигураций.

Потенциально могут быть более 100 клиентов, которым нужны разные записи индексациии TPS системы составляет 700. В настоящее время у меня есть 2 подхода,

  1. У меня есть одна лямбда, слушающая SQS (где подписаны события) и извлекает данные из источника и создает записи индекса для каждого клиента и помещаетиндексы в БД параллельно.
  2. Или, в вышеупомянутом подходе, время выполнения будет больше - поскольку параллельные вычисления зависят от общего количества доступных ядер.Итак, есть небольшая лямбда, которая дублирует входящие события с небольшим количеством клиентов (скажем, для 1 входящего сообщения, эта лямбда создаст 10 новых сообщений с 10 именами клиентов в ней) и отправит ее в другой SQS.А другая лямбда, подписавшаяся на нее, будет прослушивать эти сообщения и создавать записи индекса для каждого клиента и помещать индексы в БД параллельно.

Итак, оба подхода имеют несколько недостатков,

  1. Время выполнения выше, но меньше лямбда-вызовов.Более высокая память и более высокая загрузка ЦП.
  2. Меньше времени выполнения, но больше лямбда-вызовов.Меньше памяти и умеренно высокая загрузка ЦП.

Итак, я хочу иметь экономически эффективные решения, в которых я могу добиться максимального разветвления компонента индексации для построения индексов для нескольких клиентов.Кроме того, какой максимальной степени распараллеливания я могу достичь для каждого экземпляра AWS-лямбды?

...