Могу ли я использовать одну таблицу аренды для нескольких приложений KCL?

#amazon-kinesis #amazon-dynamodb-streams #amazon-kcl

#amazon-kinesis #amazon-dynamodb-streams #amazon-kcl

Вопрос:

Мы создаем сервис на основе потоков Kinesis / DynamoDB, и у нас есть один вопрос (который мы не можем найти в официальной документации), можем ли мы использовать одну и ту же таблицу аренды (DynamoDB) для хранения информации о контрольных точках разных приложений KCL, которые используют один и тот же поток.

  • Это хорошая практика?
  • Может ли это привести к некоторому несоответствию в поведении?
  • Вы рекомендуете использовать отдельную таблицу аренды для каждого приложения KCL?

Большое вам спасибо.

Ответ №1:

Таблица аренды DynamoDB хранит seq nums для каждого сегмента вашего приложения и может быть использована для перезапуска работы в случае перезапуска вашего приложения. Он постоянно обновляет seq num для каждого сегмента после обработки следующих записей.

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

Подводя итог — обычно необходимо использовать отдельную таблицу аренды для разных приложений.