Кафка, что будет с сообщением, если член группы потребителей выйдет из строя?

Предположим, у нас есть тема с именем Topic и группа потребителей CG с тремя потребителями. Смещение группы равно 0.

Потребители начинают читать сообщения.

Последовательность чтения:

  1. Потребитель 1 читает сообщение 1.
  2. Потребитель 2 читает сообщение 2.
  3. Потребитель 3 читает сообщение 3.
  4. Потребитель 2 фиксирует сообщение 2.
  5. Потребитель 3 фиксирует сообщение 3.
  6. Потребитель 1 не справляется с обработкой сообщения 1 и отключается.

Возникает вопрос: что будет с сообщением 1?

Или, может быть, я неправильно понимаю, как потребители читают сообщения, поскольку я новичок в Kafka.

Версия: Apache Kafka 2.4.0


person Prisacari Dmitrii    schedule 25.12.2019    source источник


Ответы (2)


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

Предположим, у вас есть тема с тремя разделами (P0, P1, P2), и если у вас есть три потребителя (C1, C2, C3) одной и той же группы, тогда каждый из них начнет потреблять из каждого раздела.

введите здесь описание изображения

Если какой-либо потребитель не может отправить смещение и упасть, он снова начнет потреблять сообщения из предыдущего смещения (в вашем случае 0)

Предположим, у вас есть тема из 5 разделов (P0, P1, P2, P3, P4) и трех потребителей (C0, C1, C3) одной группы. Затем потребители будут пытаться сбалансировать нагрузку поровну, используя каждый из двух разделов  введите описание изображения здесь

C1 потребляет от P0 и P1, а C2 потребляет от P2 и P3, а оставшийся C3 потребляет от P4.

person Deadpool    schedule 25.12.2019
comment
Итак, если C3 потребляет все сообщения из своего собственного раздела, будет ли kafka (или клиент kafka) переназначить другие разделы себе, чтобы помочь другим потребителям? - person Prisacari Dmitrii; 25.12.2019
comment
Ни один кафка ничего подобного не уйдет @PrisacariDmitrii - person Deadpool; 25.12.2019

Каждому потребителю будут назначены разделы. Допустим, у нас есть 6 разделов:

Потребитель 1: Разделы 1 и 2
Потребитель 2: Разделы 3 и 4
Потребитель 3: Разделы 5 и 6

Когда Потребитель 1 выходит из строя, группа потребителей перебалансирует и назначит свободные разделы другим потребителям, что даст нам следующую настройку:

Потребитель 2: Раздел 1 и 3 и 4
Потребитель 3: Раздел 2 и 5 и 6

Другие потребители начнут с последнего зафиксированного смещения в этом разделе.

person doompickaxe    schedule 25.12.2019