Процесс очистки данных, которые находятся в плохом состоянии - PullRequest
0 голосов
/ 12 ноября 2018

Я понимаю, что темы неизменны.

Допустим, ваша тема в плохом состоянии. Неупорядоченные участки данных, дубликаты записей и т. Д. Как происходит очистка этих данных? Как этот процесс влияет на конечных потребителей?

Я вижу несколько разных способов справиться с этим:

  1. Потребители не слушают эту первую тему, а скорее слушают очищенную производную.

  2. Версия темы и перезапись данных с применением логики дедупликации. Затем попросите потребителей изменить тему, которую они слушают. Но затем я сталкиваюсь с ситуацией, когда записи либо буферизируются, либо чередуются со старыми записями, в то время как новые записи продолжают поступать.

Какими еще способами можно справиться с этой ситуацией?

1 Ответ

0 голосов
/ 13 ноября 2018

Похоже, что архитектура потока данных не идемпотентна. Данные никогда не выходят из строя или дублируются Kafka, возникнет проблема с производителем. Kafka автоматически удалял данные из тем после периода хранения, поэтому просто подождите до тех пор, пока этот период не будет очищен, если вы беспокоитесь только о существующих данных. После того как Kafka удалит данные, любой потребитель, отстающий в чтениях (то есть хочет прочитать из удаленного смещения), должен будет установить auto.offset.reset из earliest или latest, в противном случае потребитель выдаст ошибку OffsetOutOfRange.

Между тем, если вы можете пропустить записи и начать опрос для определенного смещения / раздела, используя consumer.seek(partition, offset)

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

...