Подтвердить что ты не робот

Понимание тем и разделов Кафки

Я начинаю изучать Kafka для целей корпоративного решения.

Во время моих чтений мне пришло в голову следующее:

  • Когда производитель создает сообщение - он укажет тему, на которую он хочет отправить сообщение, верно? Он заботится о разделах?
  • Когда абонент работает - Указывает ли он свой идентификатор группы, чтобы он мог быть частью кластера потребителей той же темы или нескольких тем, заинтересованных этой группой потребителей?
  • Есть ли у каждой группы потребителей соответствующий раздел в брокере или у каждого потребителя есть один?

  • Являются ли разделы, созданные брокером, поэтому не заботятся о потребителях?

  • Поскольку это очередь со смещением для каждого раздела, отвечает ли потребитель, какие сообщения он хочет читать? Нужно ли сохранять его состояние?

  • Что происходит, когда сообщение удаляется из очереди? - Например: Удержание было в течение 3 часов, затем прошло время, как обрабатывается смещение с обеих сторон?

4b9b3361

Ответ 1

Возьмем их по порядку:)

1 - Когда производитель создает сообщение - он укажет тему, на которую он хочет отправить сообщение, верно? Он заботится о разделах?

По умолчанию производитель не заботится о разделении. У вас есть возможность использовать настраиваемый разделитель, чтобы иметь лучший контроль, но он полностью необязательный.


2 - Когда абонент работает - Указывает ли он свой идентификатор группы, чтобы он мог быть частью кластера потребителей той же темы или нескольких тем, заинтересованных этой группой потребителей?

Да, потребители присоединяются (или создают, если они одни) группу потребителей, чтобы разделить нагрузку. Ни один из двух потребителей в одной группе никогда не получит одно и то же сообщение.


3 - У каждой группы потребителей есть соответствующий раздел на брокере или у каждого потребителя есть?

Ни. Всем потребителям в группе потребителей присваивается набор разделов в двух условиях: ни один из двух потребителей в одной группе не имеет общего раздела - и группе потребителей в целом присваивается каждый существующий раздел.


4 - Разделы, созданные брокером, поэтому не беспокоят потребителей?

Это не так, но вы можете видеть из 3, что совершенно бесполезно иметь больше потребителей, чем существующие разделы, поэтому ваш максимальный уровень parallelism для потребления.


5 - Поскольку это очередь со смещением для каждого раздела, отвечает ли потребитель, какие сообщения он хочет читать? Нужно ли сохранять его состояние?

Да, потребители сохраняют смещение по каждой теме раздела. Это полностью обрабатывается Кафкой, не беспокойтесь об этом.


6 - Что происходит, когда сообщение удаляется из очереди? - Например: Удержание было в течение 3 часов, затем прошло время, как осуществляется смещение с обеих сторон?

Если потребитель когда-либо запрашивает смещение, недоступное для раздела брокеров (например, из-за удаления), он переходит в режим ошибки и, в конечном счете, reset сам для этого раздела либо самому последнему, либо самому старшему доступное сообщение (в зависимости от значения конфигурации auto.offset.reset) и продолжить работу.