AWS SQS с одним работником? - PullRequest
       13

AWS SQS с одним работником?

0 голосов
/ 20 ноября 2018

Я изо всех сил пытаюсь установить очередь в среде AWS, где задачи потребляются one Lambda / worker.

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

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

Ответы [ 2 ]

0 голосов
/ 20 ноября 2018

Установите предел параллелизма для лямбда-функции на 1.

0 голосов
/ 20 ноября 2018

Как вы заметили, «встроенный» SQS начинается минимум с пяти рабочих и расширяется.

Однако у меня есть два предложения для вас:

  • Если у вас есть только один осколок, то кинезис (с размером партии в один элемент) обеспечит последовательное упорядоченное выполнение.Это потому, что Kinesis параллельны осколком (и один осколок может занимать 1000 записей в секунду, поэтому, вероятно, хорошо иметь только одну!), А встроенный лямбда-триггер принимает настраиваемый размер пакета (который может быть 1) и ожидаетзавершить его до получения следующего пакета.
  • Если вам нужно для использования SQS, то «старый» способ интеграции (до триггера SQS) даст вам «наиболее вероятный»одно "и последовательное исполнение.Это когда вы на самом деле запускаете свою лямбду на Запланированном событии CloudWatch , которое позволяет вам иметь одну лямбду, проверяющую очередь каждый X (настроенный вами).Проблема здесь в том, что если X короче, чем количество времени, необходимое для обработки сообщения, тогда вторая лямбда будет работать параллельно (существуют такие модели, как наличие X = время ожидания вашей лямбды и просто запуск вашей лямбды для5 минут прохождения очереди по одному сообщению за раз).
...