Балансировка нагрузки в apache kafka

Я новичок в Apache Kafka и играл с ним. Если у меня есть 2 брокера и одна тема с 4 разделами и предположим, что один из моих брокеров сильно загружен, позаботится ли kafka о балансировке входящего трафика от производителей к другому бесплатному брокеру? Если да, то как это делается?


person Karthick S    schedule 10.12.2015    source источник


Ответы (2)


Если у вас есть несколько разделов, производители несут ответственность/выбор того, в какой раздел они хотят его отправить.

Производители публикуют данные в темах по своему выбору. Производитель отвечает за выбор того, какое сообщение назначить какому разделу в теме. Это можно сделать в циклическом режиме просто для балансировки нагрузки, или это можно сделать в соответствии с некоторой функцией семантического разделения (скажем, на основе некоторого ключа в сообщении). ссылка

В поставщике Kafka можно указать ключ раздела, чтобы указать раздел назначения сообщения. По умолчанию разделитель на основе хеширования используется для определения идентификатора раздела с учетом ключа, и люди также могут использовать настраиваемые разделители. Чтобы уменьшить количество открытых сокетов, в 0.8.0 (https://issues.apache.org/jira/browse/KAFKA-1017), когда ключ разделения не указан или равен нулю, производитель выберет случайный раздел и будет придерживаться его в течение некоторого времени (по умолчанию 10 минут), прежде чем переключиться на другой. ссылка

Если вы укажете, в какой раздел вы хотите помещать данные, они всегда будут помещаться в этот конкретный раздел. Если вы не укажете, производитель может отправить его в любой раздел. Брокер Kafka никогда не перемещает и не балансирует сообщения/разделы.

Я считаю, что это решение должно предоставить определенные гарантии для упорядочения сообщений в разделе Kafka.

person Morgan Kenyon    schedule 10.12.2015

Производитель Kafka имеет тенденцию распределять сообщения поровну между всеми разделами, если вы не переопределите это поведение, тогда вам нужно посмотреть, равномерно ли распределены четыре раздела между брокерами.

Это зависит от того, что вы подразумеваете под "один из брокеров сильно загружен". если это связано с этой темой или в этом кластере есть какие-либо другие темы (например, __consumer_offset).

Вы можете выбрать брокеров, в которых раздел находится, с помощью инструментов cli с Kafka или с каким-либо пользовательским интерфейсом, например yahoo kafka- менеджер.

person Samuel Beniamin    schedule 14.12.2015