Я должен передать свои данные от Kinesis до DynamoDB. Проблема в том, что не все данные поступают, когда мое программное обеспечение работает. Поэтому, когда я перезапускаю приложение, в DynamoDB добавляется много записей. Теперь я не знаю, почему записи не поступают во время выполнения, но это большая проблема. Мониторинг ресурсов хорош, я попробовал как InitialPositionInStream.LATEST, так и InitialPositionInStream.TRIM_HORIZON без каких-либо изменений. Это случилось у кого-то? Есть ли решение? Кажется, есть буфер, который сохраняет запись. Я использовал git-код aws. Возможно, это проблема с сетью?Данные от Amazon Kinesis до DynamoDB
0
A
ответ
4
Записи в Amazon Kinesis сохраняются в течение 24 часов.
Если вы используете TRIM_HORIZON
, вы должны начать с самой старой записи (то есть до 24 часов) и пройти оттуда. LATEST
означает, что вас интересуют только записи, полученные с момента запуска вашего нового приложения.
Я предлагаю вам использовать Amazon Kinesis Client Library, если вы еще этого не сделали, который будет управлять контрольной точкой записей, используя таблицу DynamoDB, которую он создает для себя, чтобы сохранить последовательность. Таким образом, когда вы остановите и перезапустите приложение, оно сохранит и возобновит работу с последней успешно обработанной записью (это все еще находится в модели «прием по меньшей мере один раз»).
Я использовал клиент Amazon Kinesis, возможно, проблема заключается в Kinesis shard, потому что с 3-мя осколками я пишу без проблем, но когда я читаю, мне нужно 25 осколков, я думаю, что их слишком много, но это похоже на работу. – luca
Интересно, могло ли быть так, что порядковые номера, сохраненные в Dynamo KCL, были слишком большими (Примечание: KCL будет использовать свою последнюю контрольную точку, если вы запустили приложение раньше, а динамо-запись для осколка существует, а не 'LATEST' или' TRIM_HORIZON'). Это может произойти, если вы повторно создали поток и не очистили содержимое базы данных динамо, которую использует KCL. Если вы действительно хотите, чтобы KCL начинался с 'LATEST' или' TRIM_HORIZON', вам нужно очистить содержимое DDB для потока. –
Я постараюсь таким образом – luca