Контрольная точка AWS Kinesis Stream - PullRequest
0 голосов
/ 16 октября 2018

У меня есть приложение, которое может обрабатывать дубликаты записей потока Kinesis.Мы рассматриваем подходы, которые мы могли бы использовать в отношении обработки сбоев.И был предложен следующий подход:

Если во время processRecords обнаружено исключение, приложение не проверяет контрольную точку.Таким образом, запись будет отправлена ​​снова вместе со следующим пакетом, косвенно выполнив повторную попытку.

Поэтому мой вопрос - когда речь идет о контрольных точках для потоков Kinesis, должно ли приложение всегда проверять контрольную точку нарегулярно?Считается ли манипулирование механизмом контрольных точек анти-паттерном?

Спасибо

1 Ответ

0 голосов
/ 24 октября 2018

Я хочу сначала уточнить кое-что о контрольных точках, что может изменить вашу точку зрения.Если я не совсем неправильно понял ваш вопрос, он меньше «манипулирует» механизмом контрольных точек и более «использует его по назначению».

  • Контрольные точки - это, по сути, механизм, позволяющий перезапустить потоковую обработку изпоследняя контрольная точка (вместо самой ранней доступной записи или «сейчас»).
  • Пропуск контрольной точки НЕ означает автоматически, что записи будут автоматически повторяться со следующей партией - вам нужно будет обработать исключение, перезапустив процессор обработки записей с некоторой позиции потока перед ошибкой (обычно это «последняя контрольная точка» в порядкечтобы сделать это.

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

Вы можете создавать контрольные точки на основе времени (каждые X секунд), записи (каждые Y записей), каждой партии, никогда или чего угодно - все зависито том, сколько отходов вы можете допустить в случае сбоя.

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

...