2016-11-30 2 views
2

Если у вас меньше потребителей, чем у разделов, означает ли это, что вы не будете потреблять все сообщения по данной теме?Если вы меньше потребителей, чем разделы, что происходит?

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

Что делать, если у вас есть несколько потребителей в заданном разделе # раздела? Я думаю, что потребитель должен каким-то образом отслеживать, какие сообщения он уже обработал в случае дубликатов?

ответ

0

1) Нет, это означает, что вы будете использовать один потребитель более чем у одного потребителя. 2) Kafka никогда не назначает один и тот же раздел более чем одному потребителю, поскольку это нарушит гарантию заказа в разделе. 3) Вы можете реализовать ConsumerRebalanceListener в своем клиентском коде, который вызывается, когда разделы назначаются или аннулируются с потребителя.

Возможно, вы захотите ознакомиться с этой статьей, в частности, с разделом «Назначение разделов для потребителей». В этом случае у меня есть образец, в котором вы создаете тему с тремя разделами, а затем потребитель с ConsumerRebalanceListener, сообщающий вам, какой потребитель обрабатывает какой раздел. Теперь вы можете поиграть с ним, начав 1 или более потребителей и посмотреть, что произойдет. Пример кода в GitHub

http://www.javaworld.com/article/3066873/big-data/big-data-messaging-with-kafka-part-2.html

5

В самом деле, каждый потребитель принадлежит к consumer group. Когда кластер Kafka отправляет данные в группу потребителей, все записи раздела будут отправляться одному пользователю в группе.

Если в группе больше париков, чем потребителей, некоторые потребители будут потреблять данные из более чем одного раздела. Если в группе больше потребителей, чем в парионах, некоторые потребители не получат никаких данных. Если вы добавите новые экземпляры клиентов в группу, они возьмут на себя часть partitons от старых членов. Если вы удаляете пользователя из группы (или умирает потребитель), его раздел будет переназначен другому члену.

Теперь давайте посмотрим на ваши вопросы:

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

NO. Некоторые потребители в одной и той же группе потребителей будут потреблять данные из более чем одного раздела.

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

Kafka позаботится об этом. Если к группе присоединятся новые потребители, или старые потребители умирают, Kafka будет делать реванш.

Что делать, если у вас есть несколько потребителей по данному разделу # раздела?

У вас НЕ МОЖЕТЕ иметь несколько потребителей (в группе потребителей), чтобы потреблять данные из одного сеанса. Однако, если имеется более одной группы потребителей, один и тот же раздел может потребляться одним (и только одним) потребителем в каждой группе потребителей.

Смежные вопросы