Как Kafka идентифицирует потребителя в группе после перезапуска после сбоя - PullRequest
1 голос
/ 19 марта 2019

Допустим, у меня есть два потребителя - С1 и С2 в одной группе потребителей. Есть 10 сообщений на тему, прежде чем С1 и С2 ожили. C1 читает первые 5 сообщений и отключается, в то время как C2 читает сообщения 9-10. С1 возвращается через некоторое время. Теперь, как Кафка идентифицирует, что только что появившийся потребитель действительно является C1, и он позволяет ему читать из последнего совершенного события, сохранил ли он некоторую информацию, когда C1 был зарегистрирован в группе ранее, чтобы он мог однозначно идентифицировать C1, когда он пришел вернуться назад?

1 Ответ

1 голос
/ 19 марта 2019

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

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

...