Digests d4n13l

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

Краткая памятка по найденному материалу

  1. Akka Producer может выступать как Akka sink - это самый легкий и быстрый способ публикации сообщений. Это означает, что все обработанные данные поступают на стрим ниже, которым выступает Producer.plainSink
  2. Akka Producer может выступать как Akka flow. После обработки данных, размещения их в топиках, Akka позволяет дальше работать с данными, это может полезным, напрмиер, в случае, когда нам нужно сначала разместить данные в одном топике, как-то их обработать и занести уже в другой топик
  3. Akka предоставляет полный контроль над сообщениями:
    • Сообщения можно объединять в MultiMessage
    • Сообщения могут быть отправлены как SingleMessage
    • Сообщения могут быть не отпарвлены в топик,а просто пропущены new ProducerMessage.PassThroughMessage<>(passThrough);
  4. Akka предоставляет интерфейс для получения метрик producer’а