Sobes.tech
Junior — Middle

Comment doit-on efficacement assigner les consommateurs dans un groupe pour équilibrer la charge sur les trois partitions d'un même sujet?

sobes.tech IA

Réponse de l'IA

Для эффективной балансировки нагрузки по трем разделам (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 автоматически распределит три раздела между ними, обеспечивая балансировку нагрузки.