Я кодирую решение для потребителя данных в кластер kafka (используя докеры для kafka), но мне все еще нужно решить, как его кодировать:
- На родном языке Kafka - эторазработано: java, в котором официальный сайт и git repo предоставляют примеры, https://github.com/apache/kafka/tree/trunk/examples/src/main/java/kafka/examples
- В другом клиенте, предоставленном на другом языке, https://cwiki.apache.org/confluence/display/KAFKA/Clients, например, Node.js
Дело в том, что я знаю, как кодировать решение на обоих языках, но я должен решить, в каком из них следует учитывать:
- Реальная производительность, потребляющая сообщения кафки без создания узких мест.(Мое первое впечатление, что кодирование чего-либо на одном и том же базовом языке, который строит Kafka, уменьшит перегрузку), но я не совсем уверен в этом.
- С точки зрения разработки решения (для сохранения языка, кодасогласованность стиля и расширяемость).Весь веб-интерфейс, сервис отдыха, а также постоянство данных разработаны в Node.js, а клиенты находятся в javascript / HTML5.
Это для сервера Ubuntu, в полностью докернизированной среде, я используюNode.js как основной язык для веб-сервисов и соединительных модулей.Я все еще не настраиваю клиента kafka, но использую параметры по умолчанию:
Java (с использованием KafkaConsumer)
import org.apache.kafka.clients.consumer.KafkaConsumer;
...
props = ...
KafkaConsumer consumer = new KafkaConsumer<>(props);
Node.js (с использованием kafka-node npm lib)
var kafka = require('kafka-node');
...
client = ....
var consumer = new kafka.Consumer( client, [{ topic: 'topicVehicle' }], { autoCommit: true });
Мне приходится иметь дело с проблемой поддержания кода на разных уровнях на разных языках (java, nodejs ... возможно, python), и мне интересно, какое решение является более правильным.