Сценарии - Тест. Параллельный Produce 

Page / - Изменено Alexandr Fokin в 2023/05/10 11:43 

Тест. Параллельный Produce 
Изменено Alexandr Fokin
в 2023/05/10 11:43

Оглавление

Цель:
 1.	Проверить поведение KafkaProducer при параллельной записи из нескольких потоков.
Является ли ThreadSafe?Не будут не терять сообщения?
 2.	Проверить Эффективность. Имеет ли смысл создавать отдельный KafkaProducer на поток или же лучше справиться Singlethon (один KafkaProducer, разделенный между всеми потоками)	
Тестирование
Кол-во сообщений
1000
Потоки
50
5	
Результаты:	
Выводы:
1) KafkaProducer хорошо показал себя при параллельной отправке из нескольких потоков.
2) Версия Singlethon показала себя немного лучше, чем несколько параллельных KafkaProducer. По данному тестированию нет смысла создавать несколько экземпляров KafkaProducer при параллельной отправке.
При этом, создание большого кол-ва KafkaProducer может привезти к очень сильным задержкам в работе программы.
Возможно имеет смысл применить концепцию пакетной обработки с накопительным буфером. (upd: producer клиент из коробки поддерживает данный функционал, конфигурируется через параметры).	
Ссылки:
Is Producer thread safe?
https://github.com/confluentinc/confluent-kafka-dotnet/issues/1096
Frequently asked questions
https://github.com/edenhill/librdkafka/wiki/FAQ#is-the-library-thread-safe
Producer
https://github.com/confluentinc/confluent-kafka-dotnet/wiki/Producer