Есть ли какой-либо симулятор / инструмент для генерации сообщений для потоковой передачи?

#streaming #apache-kafka #simulation #messaging #stub

#потоковая передача #апач-кафка #Симуляция #обмен сообщениями #заглушка #apache-kafka

Вопрос:

В целях тестирования мне нужно имитировать клиент для генерации 100 000 сообщений в секунду и отправлять их в тему kafka. Есть ли какой-либо инструмент или способ, который может помочь мне генерировать эти случайные сообщения?

Комментарии:

1. Я никогда не работал с kafka. Но вы хотите, чтобы клиент отвечал на большое количество сообщений по запросу или вы хотите, чтобы клиент запрашивал с таким количеством сообщений? В первом случае вы можете использовать stubbydb . Во втором случае вы можете использовать jmeter .

Ответ №1:

Есть встроенный инструмент для генерации фиктивной загрузки, расположенный в bin/kafka-producer-perf-test.sh (https://github.com/apache/kafka/blob/trunk/bin/kafka-producer-perf-test.sh). Вы можете обратиться к https://github.com/apache/kafka/blob/trunk/tools/src/main/java/org/apache/kafka/tools/ProducerPerformance.java#L106 чтобы выяснить, как его использовать.

Один пример использования был бы таким:

 bin/kafka-producer-perf-test.sh --broker-list localhost:9092 --messages 10000000 --topic test --threads 10 --message-size 100 --batch-size 10000 --throughput 100000
  

Ключевым моментом здесь является --throughput 100000 флаг, который указывает «ограничить максимальное количество сообщений примерно до 100000 сообщений в секунду»

Ответ №2:

Существующие ответы (например, kafka-producer-perf-test.sh ) полезны для тестирования производительности, но гораздо меньше, когда вам нужно сгенерировать больше, чем просто «один поток необработанных байтов». Если вам нужно, например, смоделировать более реалистичные данные с помощью вложенных структур или сгенерировать данные в нескольких темах, которые имеют некоторое отношение друг к другу, их недостаточно. Так что, если вам нужно больше, чем генерировать кучу необработанных байтов, я бы посмотрел на альтернативы ниже.

Обновление декабрь 2020: На сегодняшний день я рекомендую использовать https://github.com/MichaelDrogalis/voluble. Некоторая справочная информация: Автором является менеджер по продуктам Confluent для потоков Kafka и ksqlDB, а также автор / разработчикhttp://www.onyxplatform.org /.

Из многословного README:

  • Создание реалистичных данных путем интеграции с Java Faker.
  • Межпредметные связи
  • Заполнение как ключей, так и значений записей
  • Создание как примитивных, так и сложных / вложенных значений
  • Ограниченные или неограниченные потоки данных
  • Надгробие

Voluble поставляется в виде соединителя Kafka, упрощающего масштабирование и изменение форматов сериализации. Вы можете использовать Kafka Connect через его REST API или интегрированный с ksqlDB. В этом руководстве я демонстрирую использование последнего, но конфигурация одинакова для обоих. Я не учитываю конкретную конфигурацию подключения, такую как сериализаторы и задачи, которые необходимо настроить для любого соединителя.

Старый ответ (2016): я бы предложил взглянуть на https://github.com/josephadler/eventsim, который будет создавать более «реалистичные» синтетические данные (да, я осознаю иронию того, что я только что сказал:-P):

Eventsim — это программа, которая генерирует данные о событиях для тестирования и демонстраций. Он написан на Scala, потому что мы сторонники больших данных (по крайней мере, иногда). Он предназначен для репликации запросов страниц для поддельного музыкального веб-сайта (представьте что-то вроде Spotify); результаты выглядят как данные реального использования, но полностью поддельные. Вы можете настроить программу так, чтобы создавать столько данных, сколько вы хотите: данные всего для нескольких пользователей в течение нескольких часов или данные для огромного количества пользователей пользователей за многие годы. Вы можете записать данные в файлы или передать их в Apache Kafka.

Вы можете использовать поддельные данные для разработки продукта, проверки корректности, демонстраций, тестирования производительности, обучения или в любом другом месте, где полезен поток реальных данных. Вероятно, вам не следует использовать эти данные для исследования алгоритмов машинного обучения и определенно не следует использовать их, чтобы понять, как ведут себя реальные люди.

Ответ №3:

Вы можете использовать Kafka Connect для генерации случайных тестовых данных. Проверьте этот пользовательский соединитель исходного кода https://github.com/xushiyan/kafka-connect-datagen

Это позволяет вам определять некоторые настройки, такие как шаблон сообщения и рандомизируемые поля для генерации тестовых данных. Также ознакомьтесь с этим сообщением для подробной демонстрации.

Комментарии:

1. Не путать с другим, kafka-connect-datagen который поддерживает Avro data — github.com/confluentinc/kafka-connect-datagen

2. любой вариант, который можно использовать с SSL? (Heroku)