AWS Lambda - как определить дубликаты сообщений - PullRequest
0 голосов
/ 05 июля 2018

Поскольку некоторые из триггеров для AWS Lambda могут гарантировать доставку сообщения только «хотя бы один раз» (SQS и IoT с QoS = 1), мне интересно, как лучше всего идентифицировать дублирующееся сообщение и игнорировать его.

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

В моем клиенте я решаю эту проблему, просто сохраняя список идентификаторов сообщений, которые я обработал, но в Lambdas мне некуда сохранять состояние.

Конечно, я мог бы поддерживать таблицу БД с обработанными идентификаторами сообщений, но мне это кажется излишним (и, вероятно, добавляет к счетным системам дополнительное время выполнения). Достаточно простого сервиса хранения ключей / значений в памяти.

Какие еще решения вы, ребята, используете?

1 Ответ

0 голосов
/ 24 июля 2018

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

Другая вещь, на которую стоит обратить внимание, - это эластичная боль, которая имеет версии memcached и redis. Это было бы быстрее - если производительность является особым акцентом - но не является постоянным, как DynamoDB.

...