#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 для каждого сегмента после обработки следующих записей.
При этом, если вы по какой-то причине решите использовать одну и ту же таблицу аренды из разных приложений, вы потеряете возможность корректного восстановления позиции в потоке в случае сбоя и можете получить потерю данных. В общем, в этом случае таблица аренды будет бесполезна, поскольку она будет отражать состояние самых последних обработанных записей, даже не состояние одного приложения. В этом случае состояние таблицы аренды будет непоследовательным и беспорядочным.
Подводя итог — обычно необходимо использовать отдельную таблицу аренды для разных приложений.