Может ли группа потребителей kafka зависать во время перебалансировки

#apache-kafka #kafka-consumer-api

#apache-kafka #kafka-consumer-api

Вопрос:

Может ли непрерывное развертывание группы потребителей Kafka привести к зависанию группы?

Итак, давайте рассмотрим этот сценарий,

  1. мы начинаем скользящее развертывание
  2. один потребитель покидает группу
  3. Kafka замечает это и запускает перебалансировку (следовательно, потребление останавливается)
  4. перебалансировка происходит, но вскоре новый потребитель хочет присоединиться
  5. также уходит другой потребитель
  6. снова происходит новая перебалансировка
  7. (цикл до завершения развертывания)

Итак, если у вас достаточно большой кластер, и для завершения развертывания на одной машине требуется некоторое время (что обычно имеет место), приведет ли это к полному замораживанию потребления?

Если да, каковы стратегии обновления группы потребителей в рабочей среде

Ответ №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 совместное перебалансирование включено по умолчанию, поэтому вам не нужно ничего делать, чтобы включить его.