Kafka Streams - Связь между «потоковыми потоками» и «задачами», выполняемыми на 1 машине C4.XLarge - PullRequest
0 голосов
/ 04 августа 2020

У меня топология Kafka Streams с 5 процессорами и 1 источником. Источник topi c для этой топологии имеет 200 разделов. Насколько я понимаю, создается 200 задач, соответствующих количеству разделов для входных topi c.

Это приложение Kafka Streams работает на C4.XLarge, и эти 200 задач выполняются в одном потоке, что означает, что этот поток потоков должен использовать все ядра процессора (8) и память.

Я знаю, что параллелизм / масштабируемость потоков Kafka контролируется количеством потоковых потоков. Я могу увеличить num.stream.threads до 10, но как бы это повысило производительность, если бы все они работали на одном экземпляре EC2? Чем это будет отличаться от выполнения всех задач в одном потоке, который находится в одном экземпляре EC2?.

1 Ответ

1 голос
/ 08 августа 2020

Если у вас есть 8-ядерный компьютер, вы можете запустить 8 StreamsThreads.

Это приложение Kafka Streams работает на C4.XLarge, и эти 200 задач выполняются в одном потоке, который означает, что этот поток потоков должен использовать все ядра процессора (8) и память.

Звучит неправильно. Один поток не может использовать несколько ядер. При настройке одного StreamThread подразумевается, что запускаются еще несколько других фоновых потоков (поток пульса потребителя; поток отправителя производителя), предполагается, что вы не можете полностью использовать все 8 ядер с этим параметром.

Если 8 StreamsThreads не полностью используют ваши 8 ядер, которые вы могли бы рассмотреть для настройки 16 потоков. Однако обратите внимание, что все потоки будут использовать одну и ту же сеть, и поэтому, если сеть является фактически ограничивающим фактором, запуск большего количества потоков не даст вам более высокой пропускной способности (или более высокой загрузки ЦП). В этом случае вам необходимо масштабировать, используя несколько экземпляров EC2.

Учитывая, что у вас 200 задач, вы можете концептуально запустить до 200 StreamThreads, но вам, вероятно, не нужно 200 потоков.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...