#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.