Потребитель потребляет из разделов реплики, если несколько потребителей работают в одной группе потребителей? - PullRequest
0 голосов
/ 16 января 2019

Я пишу потребительское приложение kafka. У меня есть тема с 4 разделами - 1 лидер и 3 последователи. Производитель использует ключ, чтобы идентифицировать раздел для отправки сообщения. Если я напишу потребителя и запуском его на разных узлах или запуском 4 экземпляра одного и того же потребителя, как будет происходить потребление сообщений? Все 4 экземпляра получат одинаковые сообщения?

  1. Что происходит в случае, когда несколько потребителей (одна и та же группа) используют одну тему?
  2. Они получают одинаковые данные?
  3. Как регулируется смещение? Это отдельно для каждого потребителя?

Ответы [ 2 ]

0 голосов
/ 17 января 2019
  1. Что происходит в случае, когда несколько потребителей (одной группы) используют одну тему?
    Ответ: Производители отправляют записи в определенный раздел на основе ключа записи здесь. Разделитель по умолчанию для Java использует хэш ключа записи для выбора раздела. Когда в одной и той же группе есть несколько потребителей, каждый потребитель получает свой раздел. Таким образом, в этом случае только один потребитель получает все сообщения. Когда потребитель, который получает сообщения, выходит из строя, координатор группы (один из посредников в кластере) запускает перебалансировку, и затем этот раздел назначается одному из доступных потребителей.

  2. Они получают одинаковые данные?
    Ответ: Если потребитель передает принятые сообщения в раздел и отключается, как указано выше, происходит перебалансировка. Потребитель, который получает этот раздел, не будет получать сообщения. Но если потребитель отключится до того, как его завершит, то тот, кто получит этот раздел, получит сообщения.

  3. Как управляется смещение? Это отдельно для каждого потребителя?
    Ответ: Нет, смещение не является отдельным для каждого потребителя. Раздел никогда не назначается нескольким потребителям в одной и той же группе одновременно. Потребитель, которому назначен раздел, по умолчанию также получает смещение.

0 голосов
/ 16 января 2019

Я бы посоветовал вам прочитать, по крайней мере, первые несколько глав окончательного руководства конфлюента по кафке, чтобы получить предварительное понимание того, как работает кафка.

Я держал свои ответы краткими. Пожалуйста, обратитесь к книге для подробного объяснения.

Как регулируется смещение? Это отдельно для каждого потребителя?

Зависит от идентификатора группы. Для группы выполняется только одно смещение.

Что происходит в случае, когда несколько потребителей (одна и та же группа) используют одну тему?
Потребителей может быть несколько - все могут быть идентифицированы одной и той же или разными группами. Если 2 потребителя принадлежат к одной группе, оба не получат все сообщения.

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

Надеюсь, это поможет:)

...