Вопрос проверяет понимание производительности Kafka и принципов работы consumer’ов.
Kafka читает сообщения батчами.
Consumer получает набор сообщений за один poll.
Это снижает накладные расходы на сеть и CPU.
Размер батча можно настраивать.
Такой подход обеспечивает высокую пропускную способность.
Kafka оптимизирована под потоковую обработку больших объёмов данных.
Kafka работает не с отдельными сообщениями, а с пачками данных.
Consumer:
делает запрос poll()
получает набор сообщений из одной или нескольких партиций
обрабатывает их последовательно
Пример:
ConsumerRecords<String, String> records = consumer.poll(timeout);
for (ConsumerRecord<String, String> record : records) {
// обработка
}
меньше сетевых вызовов
меньше переключений контекста
лучшая утилизация CPU
настройки consumer’а
скорость обработки
задержки (latency)
Kafka читает сообщения батчами, и это ключевая причина её высокой производительности.