Поведение потребителя Кафки, когда один потребитель падает / падает - PullRequest
0 голосов
/ 30 ноября 2018

В моих темах 115 разделов и около 130 потребителей.Я ожидаю, что 115 потребителей в активном состоянии (назначение 1 к 1) и остальные 15 потребителей в состоянии ожидания.

Несколько раз я наблюдал большой объем памяти и JVM в состоянии зависания, из-за которого происходит перебалансировка.Тем не менее, я не уверен, вызывает ли это полную перебалансировку (т. Е. Назначения исправных узлов также изменяются ??) или только назначенные разделы мертвого узла назначаются одному из свободных узлов?

Кроме того, как происходит перебалансирование в случае перезапуска приложения (у меня распределенный поток 1 / потребитель на JVM)?Поскольку узлы запускаются один за другим (повторяющийся перезапуск), произойдет ли перебалансирование 115 раз (т. Е. Каждый раз, когда новый потребитель присоединяется к группе), или будет применен некоторый порог / ожидание перед началом перебалансировки (чтобы обеспечить все исправные узлы)присоединиться к заявке)?

Ответы [ 2 ]

0 голосов
/ 30 ноября 2018

По умолчанию RageAssignor.java - используется, что может привести к тому, что даже здоровые потребители снова и снова получают разные разделы, когда что-то происходит с другим узлом.Это также может означать, что раздел будет взят у здорового потребителя.Вы можете настроить его так, чтобы он использовал различные реализации интерфейса PartitionAssignor - например, StickyAssignor.java" Одно из преимуществ закрепляющего присваивателя состоит в том, что, как правило, он уменьшает количество разделов, которые на самом делепереходить от одного потребителя к другому во время переназначения".

Я бы также порекомендовал прочитать https://medium.com/@anyili0928/what-i-have-learned-from-kafka-partition-assignment-strategy-799fdf15d3ab, если вы хотите совершить глубокое погружение, как это работает под миром

0 голосов
/ 30 ноября 2018

Изменение баланса потребителя запускается каждый раз, когда потребитель Kafka с тем же идентификатором группы присоединяется к группе или покидает ее.Выход из группы потребителей можно выполнить явным образом, закрыв соединение с потребителем, или по таймауту, если JVM или сервер вышел из строя.

Так что в вашем случае, да, повторный перезапуск потребителей вызовет 115 перебалансировок потребителей.Для начала восстановления баланса в Кафке нет «порога» или «периода ожидания».

...