Как данные добавляются в разделы в Apache Kafka?

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

kafka-topics --create --zookeeper zookeeper:2181 --replication-factor 1 --partitions 3 --topic topic2

После этого я создал продюсера, как показано ниже.

 kafka-console-producer --broker-list localhost:9092 --topic topic2
 >This is my producer

Я здесь совершенно запутался. Когда я добавляю данные выше, мои данные располагаются в трех разделах или в одном разделе? потому что выше я создал три раздела. В разделе у нас есть смещение, начинающееся с нуля. Итак, в приведенном выше примере, когда я ввожу "Это мой производитель", весь текст будет располагаться со смещением 0 или один символ будет размещен в одном смещении? Я знаю это очень просто, но ни в одной документации об этом не говорится!

Затем перейдем к потребительской части, если я хочу использовать некоторые данные, если данные находятся в другом разделе, как данные будут поступать из разных разделов или как будет происходить консолидация данных? Может ли кто-нибудь помочь мне понять основы? Любая помощь будет принята с благодарностью. Спасибо


person Niranjan    schedule 15.11.2019    source источник


Ответы (2)


Разбиение на разделы

Каждое сообщение будет присвоено отдельному разделу циклически. Однако сообщения с одним и тем же ключом будут вставлены в один и тот же раздел.

Потребители

Если у вас есть N разделов, у вас может быть до N потребителей в одной группе потребителей, каждый из которых читает из одного раздела. Если у вас меньше потребителей, чем разделов, некоторые из них будут читать из более чем одного раздела. Кроме того, если у вас больше потребителей, чем разделов, некоторые из них будут неактивными и вообще не будут получать сообщения.

person Giorgos Myrianthous    schedule 15.11.2019
comment
Спасибо за Ваш ответ. Еще один вопрос, который я задал, если я добавлю какую-то строку текста, тогда вся строка текста будет сохранена со смещением O или каждый символ будет сохранен с одним смещением? - person Niranjan; 15.11.2019
comment
Сообщение будет сохранено как единое целое в разделе и не будет разбито на символы. - person Giorgos Myrianthous; 15.11.2019
comment
Итак, у нас есть смещения, начинающиеся с 0,1,3,4 и так далее. Мой продюсер отправляет данные привет, мир. Итак, hello world будет со смещением 0, верно? - person Niranjan; 15.11.2019
comment
Если предположить, что это первое сообщение, тогда да. Первое сообщение, например. hello world будет назначено смещение 0 в одном из разделов. Обратите внимание, что смещения поддерживаются на уровне раздела. Это означает, что если в тему приходит второе сообщение, и его необходимо добавить в другой раздел, ему также будет назначено смещение 0 (но на этот раз в другом разделе). - person Giorgos Myrianthous; 15.11.2019
comment
Хорошо спасибо. Сколько данных мы можем хранить в одном смещении? Есть ли ограничения по размеру? - person Niranjan; 15.11.2019
comment
@Niranjan Вы не можете ничего хранить в смещении. Смещение - это просто числовой последовательный идентификатор, который используется для однозначной идентификации каждой записи в разделе. - person Giorgos Myrianthous; 15.11.2019

Каждое сообщение будет отправлено в 1 раздел.

Но не забывайте упорядочивать сообщения при создании нескольких разделов. Порядок сообщений внутри раздела гарантирован.

Итак, если вы напишете потребителя и начнете читать с самого начала, то порядок не будет общим.

person me_subhamsaraf    schedule 25.12.2019