Модель Pubsub против точки в точке в Кафке

#apache-kafka #publish-subscribe

Вопрос:

Я новичок в кафке, поэтому мне трудно понять модель pubsub. Допустим,у меня есть тема с 2 разделами(назовем их разделом 1, разделом 2)

У меня есть 3 потребителя, где

потребитель1,потребитель2 —> принадлежат группе потребителей1, и каждый из них связан с разделом1 и разделом2

потребитель3 —> принадлежит группе потребителей2 и является единственным потребителем в этой группе.Он считывает данные из раздела 1

давайте скажем, что все 3 потребителя читают из раздела 1, в котором 5 сообщений

Мои сомнения таковы,

1.Все ли 5 сообщений в разделе 1 доходят до каждого из потребителей,т. е. до потребителя1 и потребителя3 ? Или они обмениваются сообщениями одно за другим ,поскольку смещение, поддерживаемое кафкой, может не иметь представления о потребителе, принадлежащем к одной и той же группе потребителей или разным группам потребителей?Это называется шаблоном паба-суб?

2.Если я хочу,чтобы разговор шел от точки к точке,все, что мне нужно сделать, — это объединить всех потребителей в одну группу потребителей.Я прав?

Ответ №1:

Две группы не обмениваются сообщениями, и несколько пользователей в одной группе не могут получать сообщения из одного раздела. Также нет гарантии заказа, в которой говорится, что «потребитель1» назначен «разделу 1» (очень вероятно, что «потребитель1» умрет, и оба раздела будут назначены «потребителю 2»). «Потребитель3» будет считываться из обоих разделов, если он является единственным членом этой группы.

Смещения отслеживаются группой, а не потребителем client.id .

Кафка всегда публикуется-подписывается. Модели «точка-точка» не будут использовать посредника сообщений (например, клиент-сервер TCP, такой как HTTP или gRPC).