Sobes.tech
Junior — Middle

Hoe moeten consumenten effectief worden toegewezen aan een groep om de belasting over de drie partities van een onderwerp te balanceren?

sobes.tech AI

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