Может ли установка типа kinesis shard-iterator на LATEST привести к потере сообщений в лямбде? - PullRequest
1 голос
/ 15 октября 2019

Мы пытаемся определить лучший shard-iterator-type для нашей лямбды, но я получаю смешанную информацию о функциональности типа итератора сегмента ПОСЛЕ , лямбда была развернута впервые.

Мне сказали, что если мы используем shard-iterator-type из LATEST, то при развертывании обновленной версии лямбды мы потеряем сообщения, поскольку лямбда всегда будет извлекать самые последние сообщения изkinesis и будет игнорировать те, которые он не обрабатывал во время развертывания.

Мой вопрос: это правильно?

1 Ответ

0 голосов
/ 21 октября 2019

Да, это правильно.

Когда ваше приложение начинает читать с типом итератора LATEST, оно начинает читать со следующей записи. Таким образом, все данные, которые уже были в очереди, будут игнорироваться. Это означает, что если ваше приложение имеет время простоя - каждое сообщение во время этого простоя будет пропущено.

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

Если ваша лямбда развернута впервые (предыдущий порядковый номер не сохранен), вы, вероятно, захотите начать с:

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