#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-datagen2. любой вариант, который можно использовать с SSL? (Heroku)