Исходный код вики Тест. Параллельный Produce

Редактировал(а) Alexandr Fokin 2023/05/10 11:43

Скрыть последних авторов
Alexandr Fokin 4.16 1 |Цель:(((
2 1. Проверить поведение KafkaProducer при параллельной записи из нескольких потоков.
3 Является ли ThreadSafe?Не будут не терять сообщения?
4 1. Проверить Эффективность. Имеет ли смысл создавать отдельный KafkaProducer на поток или же лучше справиться Singlethon (один KafkaProducer, разделенный между всеми потоками)
5 )))
6 |(((
Alexandr Fokin 1.1 7 Тестирование
8 Кол-во сообщений
9 1000
10
11 Потоки
12 50
13 5
Alexandr Fokin 4.16 14 )))
15 |Результаты:
16 |Выводы:
Alexandr Fokin 1.1 17 1) KafkaProducer хорошо показал себя при параллельной отправке из нескольких потоков.
18 2) Версия Singlethon показала себя немного лучше, чем несколько параллельных KafkaProducer. По данному тестированию нет смысла создавать несколько экземпляров KafkaProducer при параллельной отправке.
Alexandr Fokin 2.1 19 При этом, создание большого кол-ва KafkaProducer может привезти к очень сильным задержкам в работе программы.
Alexandr Fokin 4.16 20 Возможно имеет смысл применить концепцию пакетной обработки с накопительным буфером. (upd: producer клиент из коробки поддерживает данный функционал, конфигурируется через параметры).
21 |(((
22 Ссылки:
Alexandr Fokin 1.1 23
Alexandr Fokin 4.16 24 Is Producer thread safe?
25 https://github.com/confluentinc/confluent-kafka-dotnet/issues/1096
Alexandr Fokin 4.1 26
Alexandr Fokin 4.16 27 Frequently asked questions
Alexandr Fokin 4.1 28 https://github.com/edenhill/librdkafka/wiki/FAQ#is-the-library-thread-safe
Alexandr Fokin 4.16 29
30 Producer
Alexandr Fokin 4.1 31 https://github.com/confluentinc/confluent-kafka-dotnet/wiki/Producer
Alexandr Fokin 4.16 32 )))