Я использую следующую конфигурацию для JSON в своем приложении Kafka Streams,
properties.put(StreamsConfig.DEFAULT_KEY_SERDE_CLASS_CONFIG,
Serdes.String().getClass());
properties.put(StreamsConfig.DEFAULT_VALUE_SERDE_CLASS_CONFIG,
GenericJSONSerde.class);
properties.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG,
com.buy.json.JsonSerializer.class);
properties.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG,
com.buy.json.JsonDeserializer.class);
properties.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG,
com.buy.json.JsonSerializer.class);
Чтобы измерить производительность, я удалил всю логику и все, что я получаю из темы IN, я просто подталкиваю ее кВне темы. Обработка 350 000 записей
занимает 3 минуты. Но когда я использую AVRO, то же потоковое приложение обрабатывает 3 миллиона записей всего за 1 минуту. Вот моя конфигурация AVRO,
`properties.put(StreamsConfig.DEFAULT_KEY_SERDE_CLASS_CONFIG,
Serdes.String().getClass());
properties.put(StreamsConfig.DEFAULT_VALUE_SERDE_CLASS_CONFIG,
GenericAvroSerde.class);
properties.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG,
io.confluent.kafka.serializers.KafkaAvroSerializer.class);
properties.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG,
io.confluent.kafka.serializers.KafkaAvroSerializer.class);
properties.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG,
io.confluent.kafka.serializers.KafkaAvroDeserializer.class);
properties.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG,
io.confluent.kafka.serializers.KafkaAvroDeserializer.class);`
Потоковое приложение, которое я пишу, должно поддерживать оба AVRO / JSON. Я решу, что при запуске приложения Streams.
Мой вопрос таков: использование JSON снижает производительность в приложении Streams? Пожалуйста, уточните.