Где хранится offset прочитанных сообщений Кафка?
Например, есть 4 консьюмера(потребителя), которые читаю данные из топика.
Как Кафка обеспечивает то, что ранее прочитанные сообщения из топика не будут повторно прочитаны другими потребителями или тем же потребителем снова?
Где и как хранится этот оффсет прочитанных сообщений и как он назначается потребителям в процессе работы и перезапуска кафки?
Ответы (3 шт):
В ZooKeeper. Правда, хотят они от этой зависимости избавиться.
оффсеты консьюмеров хранятся в кафке, в специальном топике с именем __consumer_offsets
В посте https://stackoverflow.com/questions/41137281/offsets-stored-in-zookeeper-or-kafka говорится, что до 0.9 версии кафка хранит оффсеты в зукипере, в более старших версиях в топике __consumer_offsets. Соответствующая версия должна быть как у брокера так и у клиента.
Чтобы ранее прочитанные сообщения не были прочитаны повторно, можно посмотреть в сторону подхода exactly once на консюмере кафки или в сторону архитектурного подхода Дедубликация сообщений.