Sobes.tech
Junior — Middle
64

Каким образом следует эффективно назначить потребителей в группе для балансировки нагрузки по трем разделам одного топика?

Компании, где спрашивали
SimbirsoftSimbirsoft

Ответ от нейросети

sobes.tech AI

Для эффективной балансировки нагрузки по трем разделам (partition) одного топика в Kafka следует создать группу потребителей (consumer group) с количеством потребителей, не превышающим количество разделов. В вашем случае оптимально создать ровно три потребителя в группе, чтобы каждый потребитель обрабатывал один раздел. Если потребителей меньше, некоторые разделы будут не обслуживаться; если больше — некоторые потребители останутся без работы.

Пример настройки в Java:

Properties props = new Properties();
props.put("group.id", "my-group");
props.put("bootstrap.servers", "localhost:9092");
props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
props.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");

KafkaConsumer<String, String> consumer = new KafkaConsumer<>(props);
consumer.subscribe(Collections.singletonList("my-topic"));

Запустите три экземпляра такого потребителя с одинаковым group.id — Kafka автоматически распределит три раздела между ними, обеспечивая балансировку нагрузки.