Перебалансировка клиента при выборе лидера

#apache-kafka

#apache-kafka

Вопрос:

У меня есть настраиваемая настройка kafka, в которой мое приложение и брокер kafka размещаются в одном узле.
Чтобы убедиться, что экземпляр приложения использует только разделы в этом узле (чтобы уменьшить нагрузку на сеть), у меня есть пользовательский назначитель разделов, назначенный всем членам группы.

Однако, если брокер выходит из строя, а затем он присоединяется к кластеру, вызовет ли это перебалансировку потребителя? Аналогично, если я добавлю нового брокера и запущу сценарий переназначения разделов, это также вызовет перебалансировку?

Ответ №1:

Обычно перебалансировка потребителя происходит, когда :

  • Потребитель присоединяется к группе потребителей или покидает ее.
  • Потребителю не удается отправить запрос сердцебиения координатору брокера до достижения тайм-аута (см. session.timeout.ms И heartbeat.interval.ms ), управляющего группой.
  • Потребитель недостаточно часто вызывает poll() метод (см. max.poll.interval.ms ).
  • Изменилась пользовательская подписка.
  • Изменились метаданные для темы, соответствующей подписке (т.е. Было увеличено количество разделов).
  • Создана новая тема, соответствующая подписке (при использовании шаблона).
  • Тема, соответствующая подписке, была удалена (при использовании шаблона).
  • Когда перебалансировка запускается вручную с помощью пользовательского API Java (см. Consumer#enforceRebalance() ).
  • Когда брокер, выступающий в качестве координатора группы, выходит из строя.

Итак, чтобы ответить на ваш вопрос, добавление нового брокера не приведет к переназначению раздела.

Вот сообщение в блоге, объясняющее, как работает протокол перебалансировки Apache Kafka Rebalance Protocol, или магия ваших приложений streams.