Кафка несколько групп потребителей - PullRequest
0 голосов
/ 27 октября 2018

У меня есть несколько групп потребителей, каждая из которых имеет 1 потребителя.

Скажем, Тема T1 и Раздел P1 и 2 группы потребителей CG1 и CG2 CG1 имеет 1 потребителя - CG1# C1 и, соответственно, CG2 имеет CG2 # C1

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

Мой вопрос заключается в том, как Кафка поддерживает смещение для нескольких потребителейгрупп.Если одна группа потребителей не работает в течение нескольких минут и резервное копирование снова выполняется, то каким образом она получит сообщение от последнего подтвержденного чтения.CG1 находится в смещении 24, а CG2 'перед тем, как идти вниз, фиксируется до смещения 10. Поэтому, когда CG2 повышается, как он начнет получать из смещения 11 и CG1 не затронут.

Ответы [ 2 ]

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

Потребительские группы являются независимыми субъектами.Если потребители в разных группах потребителей подпишутся на одну и ту же тему кафки, не будет никакого столкновения между управлением смещением.Каждая группа потребителей будет поддерживать свое собственное смещение в темах __consumer_offsets (это сжатая внутренняя тема, управляющая смещениями потребителей)

Kafka предоставляет возможность сохранить все смещения для данной группы потребителей в назначенном посреднике (для этой группы) называется диспетчером смещения.Всякий раз, когда потребитель читает сообщение из раздела, он отправляет запрос на фиксацию смещения менеджеру смещения.Как только запрос на принятие принят, потребитель может прочитать следующее смещение.

В случае сбоя фиксации смещения потребитель повторяет попытку фиксации.Каждая фиксация смещения поддерживается для каждого раздела.

Вот подробное объяснение: http://kafka.apache.org/documentation/#impl_offsettracking

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

По умолчанию смещения хранятся в специальной теме под названием __consumer_offsets.Это сжатая тема , где смещения хранятся в виде сообщений с ключом, который содержит тему, раздел и группу потребителей в качестве ключа.Благодаря этому компенсации для разных групп потребителей независимы.Надеюсь, что это ответ на ваш вопрос.Для получения дополнительной информации о том, как именно это обрабатывается, вы можете посмотреть здесь: http://kafka.apache.org/documentation/#impl_offsettracking

...