В приложении KafkaStreams есть потоки java - PullRequest
1 голос
/ 22 марта 2019

Наличие топологии KafkaStreams, которая потребляет и после некоторых этапов обработки выдает результаты для другой темы kafka и настраивается с помощью:

num.stream.threads: 10

JConsole сообщает, что есть 20 потоков пользователей, 20 потоков производителей, 20 потоков сердцебиения.

Почему количество таких потоков равно 20 вместо 10? в случае большого количества num.stream.threads это создает значительные накладные расходы - на производстве мы настроили 64, и в нём более 400 собственных потоков Java.

Ответы [ 2 ]

0 голосов
/ 23 марта 2019

Я нашел причину двойного количества потоков. Мы использовали spring-kafka StreamsBuilderFactoryBean для создания KafkaStream, который создает KafkaStream под капотом. После удаления количество потоков было разделено на 2.

0 голосов
/ 22 марта 2019

Каждый StreamThread (в соответствии с настройкой через num.stream.threads) создает потребителя, потребителя восстановления (может быть, глобального потребителя) и одного производителя (если «точно-один процесс» отключен; вы включаете обработку только один раз) создается еще больше производителей).

Каждый потребительский клиент запускает фоновый поток сердцебиения. Каждый клиент Producer запускает фоновый поток отправителя. Вот почему вы видите больше тем.

...