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

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

Во время моих чтений у меня возникли вопросы:

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

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

Как перегородки, созданные брокером, поэтому не заботятся о потребителях?

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

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

Ответы на вопрос(1)

Решение Вопроса
На этот пост уже есть ответы, но я добавляю свой вид с несколькими фотографиями из Kafka Definitive Guide

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

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

Производитель определит целевой раздел для размещения любого сообщения, от которого зависит

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

Вы должны всегда настраиватьgroup.id если вы не используете простой API назначения и вам не нужно хранить смещения в Kafka. Он не будет частью какой-либо группы.источник

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

В одной группе потребителей каждый раздел будет обрабатываться только одним потребителем., Это возможные сценарии

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

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

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

Кафка (чтобы быть конкретнымКоординатор группы) заботится о состоянии смещения путем создания сообщения для внутреннего__consumer_offsets Кроме того, это поведение можно настроить вручнуюenable.auto.commit вfalse, В таком случаеconsumer.commitSync() а такжеconsumer.commitAsync() может быть полезно для управления смещением.

Больше оКоординатор группы:

Это один из избранных брокеров в кластере со стороны сервера Kafka.Потребители взаимодействуют с координатором группы для фиксации смещения и получения запросов.Потребитель периодически посылает пульс Координатору группы.6. Что происходит, когда сообщение удаляется из очереди? - Например: удержание было в течение 3 часов, затем проходит время, как обрабатывается смещение с обеих сторон?

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

 mrsrinivas13 нояб. 2018 г., 11:37
@ g10guang: это из-за трудностей всмещение коммита поддержание.
 C4stor24 авг. 2018 г., 18:35
Я имел в виду, что я (или вы) могли бы включить элементы вашего ответа в свой, чтобы сделать их более заметными и улучшить этот (в настоящее время) лучший ответ. Но я бы не стал это делать без вашего согласия!
 g10guang13 нояб. 2018 г., 09:07
Почему нельзя сопоставить мультипотребителя с разделом? Чтобы сообщение просто обрабатывалось один раз? Спасибо за ваш ответ.
 C4stor24 авг. 2018 г., 14:20
Привет ! Я являюсь автором принятого ответа, но я думаю, что ваш ответ тоже хорош, особенно в пункте 3, где диаграммы проясняют ситуацию на 200%! Как вы думаете, мы должны слить?

Ваш ответ на вопрос