Producer
Чек-лист заданий
Полный список дайджестов
Задача - провести perfomance-тест работы производителя Kafka c Akka и Kafka без Akka
Какие задачи решены?
- Изучил как правильно организовывать тестирование на Java с использваонием JMH
- Изучил основные возможности JMH, конструкции для проведения benchmark
- Написал классы producer’ов с использованием Akka (ReactiveKafkaProducer) и без(KafkaProducer)
- Рассмотрел коробочные решения, представленные в документации akka
Что планирую сделать дальше?
- Перейти к обработке следующего случая - PlainConsumer (Простой потребитель без коммита прочитанных данных)
Вывод
Benchmark (limit) Mode Cnt Score Error Units
Benchmarks.a_kafkaProducerBench 10000 thrpt 5 21,715 ± 5,373 ops/s
Benchmarks.a_reactiveKafkaProducerBench 10000 thrpt 5 1,727 ± 0,413 ops/s
Таким образом мы видим деградацию производительности в 10 при использовании Akka
Краткая памятка по найденному материалу
- Akka Producer может выступать как Akka sink - это самый легкий и быстрый способ публикации сообщений. Это означает, что все обработанные данные поступают на стрим ниже, которым выступает Producer.plainSink
- Akka Producer может выступать как Akka flow. После обработки данных, размещения их в топиках, Akka позволяет дальше работать с данными, это может полезным, напрмиер, в случае, когда нам нужно сначала разместить данные в одном топике, как-то их обработать и занести уже в другой топик
- Akka предоставляет полный контроль над сообщениями:
- Сообщения можно объединять в MultiMessage
- Сообщения могут быть отправлены как SingleMessage
- Сообщения могут быть не отпарвлены в топик,а просто пропущены
new ProducerMessage.PassThroughMessage<>(passThrough);
- Akka предоставляет интерфейс для получения метрик producer’а