Что такое IS Kafka Rebalancing?

Я новый пользователь Kafka и сейчас с ним играю около 2-3 недель. Я считаю, что в настоящий момент я хорошо понимаю, как работает Kafka по большей части, но после попытки поиграть и спроектировать своего собственного потребителя Kafka (это неясно, но я следую рекомендациям для нового KafkaConsumer, который предполагается чтобы быть доступным для v 0.9, который отсутствует в репозитории "trunk" ). У меня были проблемы с задержкой, связанные с темой, если у меня несколько пользователей с одним и тем же идентификатором группы.

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

Я также наткнулся на этот отрывок из https://cwiki.apache.org/confluence/display/KAFKA/Kafka+0.9+Consumer+Rewrite+Design, и я просто не могу понять его, поэтому, если кто-то может помочь мне сделать смысл этого, который будет высоко оценен:

Ребалансирование - это процесс, когда группа экземпляров потребителей (принадлежащие к той же группе) координируют свою независимую набор разделов тем, на которые подписана группа. На завершение успешной операции ребалансировки для группы потребителей, каждая раздел для всех подписанных тем будет принадлежать одному потребителю экземпляр внутри группы. Способ ребалансировки заключается в следующем. Каждый брокер избирается в качестве координатора для подмножества групп потребителей. Брокер-координатор для группы несет ответственность для организации операции по балансировке по членству в группе потребителей изменения или изменения разделов для подписанных тем. Это также ответственный за передачу результирующего владельца раздела конфигурация всем потребителям группы, подвергающейся перебалансировке операции.

Ответ 1

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

для этой команды: rebalance.max.retries и по умолчанию установлено значение 4.

это может произойти, если верно следующее:

Тайм-аут сеанса ZooKeeper. Если потребитель не может биться с ZooKeeper в течение этого периода времени, он считается мертвым и произойдет перебалансировка.

Надеюсь, это поможет!

Ответ 2

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

A Ребалансирование происходит, когда:

  • потребитель ПРИСОЕДИНЯЕТ группу
  • пользователь SHUTS DOWN cleanly
  • потребитель считает DEAD координатором группы. Это может произойти после сбоя или когда потребитель занят длительной обработкой, а это означает, что между тем потребителем не было отправлено ни одного бита в координатор группы в течение настроенного интервала сеанса
  • добавлены новые разделы


Будучи координатором группы (одним из брокеров в кластере) и лидером группы (первым потребителем, который присоединяется к группе), назначенным для группы потребителей, Rebalance может быть более или менее описан следующим образом:

  • лидер получает список всех потребителей в группе из (это будет включать всех потребителей, которые отправили в последнее время, которые считаются живыми), и ответственный за присвоение подмножества разделов каждому потребителю.
  • После определения назначения раздела (у Kafka есть несколько встроенных политик назначения разделов), лидер группы отправляет список назначений координатору группы, который отправляет этот информации всем потребителям.


Это относится к Kafka 0.9, но я уверен, что для более новых версий все еще действует.