Back to questions
СБЕР
Senior
3
Каким образом несколько инстансов ACL-сервиса принимают сообщения из Kafka?
Companies where asked
Answer from AI
sobes.tech AI
Несколько инстансов ACL-сервиса, потребляющих сообщения из Kafka, обычно объединяются в одну consumer group. Kafka гарантирует, что каждое сообщение из топика будет обработано ровно одним инстансом в группе, распределяя партиции между ними. Таким образом, если у вас, например, 3 инстанса и 6 партиций, Kafka распределит партиции между инстансами, обеспечивая параллельную обработку и балансировку нагрузки.
Пример на Java с использованием KafkaConsumer:
Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092");
props.put("group.id", "acl-service-group");
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("acl-topic"));
while (true) {
ConsumerRecords<String, String> records = consumer.poll(Duration.ofMillis(100));
for (ConsumerRecord<String, String> record : records) {
// Обработка сообщения
}
}
Таким образом, каждый инстанс с одинаковым group.id будет получать свою долю сообщений, обеспечивая масштабируемость и отказоустойчивость.