Предположим, у нас есть тема с именем 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

5
Prisacari Dmitrii 25 Дек 2019 в 17:32

2 ответа

Лучший ответ

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

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

enter image description here

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

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

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

2
Deadpool 25 Дек 2019 в 15:50

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

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

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

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

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

2
doompickaxe 25 Дек 2019 в 14:57