Как обеспечить однократную обработку данных в безсерверной архитектуре AWS? - PullRequest
1 голос
/ 12 марта 2019

У меня есть некоторые данные, которые необходимо обработать в определенный момент времени.

Моя текущая стратегия - извлекать данные каждую минуту, загружать их в очередь и обрабатывать.

У меня есть две проблемы с этой стратегией:

  1. Я не могу гарантировать, что в последнюю минуту будут собраны все данные, поэтому я извлекаю последние две минуты; и
  2. Насколько мне известно, лямбды могут срабатывать несколько раз в зависимости от триггера (в данном случае SQS.)

Я пытаюсь избежать записи флага в данные из-за spikey-характера пакетной обработки.

Единственное другое решение, которое я могу придумать, - это использование S3 для создания файла блокировки.

Есть ли лучший способ «начать» будущие события? Есть ли стратегия вне базы данных и флагов S3?

1 Ответ

1 голос
/ 12 марта 2019

Посмотрите SQS FIFO Queues , они предназначены для доставки один раз и только один раз.

Теперь вы можете использовать Amazon Simple Queue Service (SQS) для приложений, которым требуется, чтобы сообщения обрабатывались в строгой последовательности и ровно один раз с использованием очередей «первым пришел - первым вышел» (FIFO). Очереди FIFO предназначены для обеспечения строгого сохранения порядка, в котором сообщения отправляются и принимаются, и что каждое сообщение обрабатывается ровно один раз. ... источник

...