#apache-kafka #kafka-consumer-api
#apache-kafka #kafka-consumer-api
Вопрос:
Может ли непрерывное развертывание группы потребителей Kafka привести к зависанию группы?
Итак, давайте рассмотрим этот сценарий,
- мы начинаем скользящее развертывание
- один потребитель покидает группу
- Kafka замечает это и запускает перебалансировку (следовательно, потребление останавливается)
- перебалансировка происходит, но вскоре новый потребитель хочет присоединиться
- также уходит другой потребитель
- снова происходит новая перебалансировка
- (цикл до завершения развертывания)
Итак, если у вас достаточно большой кластер, и для завершения развертывания на одной машине требуется некоторое время (что обычно имеет место), приведет ли это к полному замораживанию потребления?
Если да, каковы стратегии обновления группы потребителей в рабочей среде
Ответ №1:
Да, это определенно возможно. Недавно был внесен ряд улучшений для уменьшения времени простоя во время подобных событий. Я бы рекомендовал включить одну или обе или следующие функции:
Статическое членство было добавлено в 2.3 и может предотвратить перебалансировку при возврате известного члена группы. Для этого требуется, чтобы и клиент, и брокер были версии 2.3
Постепенное совместное перебалансирование позволяет группе выполнять более быстрые перебалансировки и позволяет отдельным участникам продолжать потребление на протяжении всей перебалансировки. Вы все равно увидите перебалансировки во время скользящего развертывания, но они не приведут к полному замораживанию потребления на время. Это полностью клиентская часть, поэтому она будет работать с любыми брокерами, но ваши клиенты должны быть на версии 2.5.1
Комментарии:
1. Для
Static membership
-> я могу понять, что (вместе с клиентом / брокером должно быть 2.3 ) добавленияgroup.instance.id
на стороне клиента должно быть достаточно. Но дляIncremental cooperative rebalancing
версии клиента 2.5.1 должно быть достаточно? Я имею в виду, есть ли какая-либо конкретная настройка, которую нужно выполнить?2. Да, для простой группы потребителей вам необходимо установить для присваивателя раздела значение CooperativeStickyAssignor . Имя фактической конфигурации — «partition.assignment.strategy» (обратите внимание, если вы хотите выполнить непрерывное обновление, вам нужно будет следовать определенному пути обновления для переключения назначителей. По сути, вам нужны два отката, первый для добавления CooperativeStickyAssignor в список partition.assignment.strategy, а второй — для удаления старого назначителя. Но если вы запускаете новое приложение, вы можете просто начать с CooperativeStickyAssignor).
3. Для приложения Streams совместное перебалансирование включено по умолчанию, поэтому вам не нужно ничего делать, чтобы включить его.