Контрольно-пропускной пункт AWS Kinesis Stream

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

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

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

Спасибо

1 ответ

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

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

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

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

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

Другие вопросы по тегам